2015-09-14 2 views
-1

У меня возникли проблемы с загрузкой файла Blab из MYSQL с использованием php.Загрузить полный размер файла в PHP Mysql

Вот мой PHP скрипт в скачивании файла:

 $querysel = "Select * from file where file_id = '$fileid'"; 
     $resultsel = mysql_query($querysel); 
     $rowsel = mysql_fetch_array($resultsel); 

     $filename = $rowsel['file_name']; 
     $mimetype = $rowsel['mime_type']; 
     $filesize = $rowsel['file_size']; 

     header("Content-length: ".$filesize); 
     header("Content-type: ".$mimetype); 
     header("Content-disposition: attachment; filename=".$filename); 
     header("Content-Description: PHP Generated Data"); 
     header("Content-transfer-encoding: binary"); 
     echo $filename; 

И эта таблица в MySQL: enter image description here

ПРОБЛЕМА   [ОБНОВЛЕНО]

  1. Wha t, похоже, проблема в том, что после загрузки файла размер файла из этого конкретного файла не совпадает с размером файла, сохраненным в mysql. Я не знаю почему?

  2. Я также сталкиваюсь с этой небольшой проблемой. После того, как я загрузил Powerpoint и удалю ее, и ее загрузка снова будет автоматически сохранена для загрузки и будет автоматически открыта. Это нормально?

Пример:

BLOB файл с должен 6.8MB размер файла должен был быть загружен с 6.8MB также, но то, что произошло здесь в том, что размер файла загруженного файла только 25bytes. Зачем?

Любая помощь будет высоко оценена. Благодаря

+0

Почему бы вам не попробовать это? http://www.2my4edge.com/2013/07/file-download-coding-using-php-and-mysql.html –

+0

используйте unserialize в столбце file_content: http://php.net/manual/fr/function. unserialize.php И после проверки размер файла – Fky

+3

Я думаю, вы найдете «01 LCD Slides 1.pps» около 25 символов. Может быть, вы хотели вернуть файл, а не имя файла? – markdwhite

ответ

2

Мне кажется, вы хотите быть повторяющим содержимое файла, а не его именем файла

$querysel = "Select * from file where file_id = '$fileid'"; 
    $resultsel = mysql_query($querysel); 
    $rowsel = mysql_fetch_array($resultsel); 

    $filename = $rowsel['file_name']; 
    $mimetype = $rowsel['mime_type']; 
    $filesize = $rowsel['file_size']; 

    header("Content-length: ".$filesize); 
    header("Content-type: ".$mimetype); 
    header("Content-disposition: attachment; filename=".$filename); 
    header("Content-Description: PHP Generated Data"); 
    header("Content-transfer-encoding: binary"); 

    echo $rowsel['file_content'];   //<-- changed line 

Конечно, вы все еще, вероятно, есть проблема с большими файлами в том, что BLOB не достаточно большая, чтобы держать 6,8 Мэг. Подробнее см. @ Fred-ii- comment и ссылки на всю необходимую информацию, необходимую для проверки.

Даже LONGBLOB - это всего лишь 4 294 967 295 байт, это немного больше 4Gig, поэтому вам, вероятно, потребуется выполнить некоторую проверку размера перед сохранением даже LONGBLOB.

Самым безопасным предложением было бы хранить фактические файлы на диске и только имя файла и путь в базе данных.

Смежные вопросы