Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/05/2017, 20:29
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Leer directorio de archivos y cargarlos a BD como Bytea

Mira esto hice con mysqli y me anduvo muy bien:

Carga:

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Config
  4.  
  5. $d = "dir/subdir"; //Direction without / final
  6.  
  7. $db_data = array(
  8. "server" => "server", //DB server
  9. "user" => "user", //DB user
  10. "pass" => "pass", //DB pass
  11. "db" => "db", //Data Base
  12. "table" => "table" //DB table
  13. );
  14.  
  15. //End config
  16.  
  17. $mysqli = new mysqli($db_data["server"], $db_data["user"], $db_data["pass"], $db_data["db"]);
  18.  
  19. $dir = scandir($d);
  20.  
  21. for($k=0;$k<sizeof($dir);$k++){
  22.     if($dir[$k] != "." && $dir[$k] != ".." && !is_dir("$d/".$dir[$k])){
  23.     $file = "$d/".$dir[$k];
  24.     $name = $dir[$k];
  25.     $size = filesize($file);
  26.    
  27.     $fo = finfo_open(FILEINFO_MIME_TYPE);
  28.     $mime = finfo_file($fo, $file);
  29.     finfo_close($fo);
  30.    
  31.     $fop = fopen($file,"r");
  32.     $data = $mysqli->real_escape_string(fread($fop,$size));
  33.     fclose($fop);
  34.  
  35.     $mysqli->query("INSERT INTO ".$db_data["table"]." (name, size, mime, data) VALUES ('$name', '$size', '$mime', '$data')");
  36.     }
  37. }
  38.  
  39. ?>

Download:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $idFile = 3; //someway to get the id of file
  4.  
  5.  
  6. //Config
  7.  
  8. $db_data = array(
  9. "server" => "server", //DB server
  10. "user" => "user", //DB user
  11. "pass" => "pass", //DB pass
  12. "db" => "db", //Data Base
  13. "table" => "table" //DB table
  14. );
  15.  
  16. //End config
  17.  
  18. $mysqli = new mysqli($db_data["server"], $db_data["user"], $db_data["pass"], $db_data["db"]);
  19.  
  20. $file = $mysqli->query("SELECT * FROM ".$db_data["table"]." WHERE id='$idFile'")->fetch_assoc();
  21. $name = $file["name"];
  22. $size = $file["size"];
  23. $data = $file["data"];
  24.  
  25. header('Content-Description: File Transfer');
  26. header('Content-Type: application/octet-stream');
  27. header('Content-Disposition: attachment; filename="'.$name.'"');
  28. header('Expires: 0');
  29. header('Cache-Control: must-revalidate');
  30. header('Pragma: public');
  31. header('Content-Length: '.$size);
  32. echo $data;
  33.  
  34. ?>

Y mi tabla:

id: primary ai
name: varchar
size: int
mime: varchar
data: longblob

Tu dale la longitud y cotejamiento a toda la tabla

Eso, falta las validaciones, pero espero haber ayudado.

Saludos

Última edición por alvaro_trewhela; 04/05/2017 a las 09:00