Intereting Posts
Xamarin / PHP, я хочу сделать мой Jarray в JObject, либо в C # (Xamarin), либо в моем PHP-коде Продолжайте получать ошибки на веб-сайте с помощью AnchorCMS Должен ли я использовать глобальные функции PHP? Как построить вложенные ответы в приложении, основанном на Apigility, с использованием модели на основе ZfcBase-DbMapper? index.php в CakePHP я не понимаю Папка Laravel 4.1 Макеты недоступны в папке представлений xslt 1 и функция суммы Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean задан в API-интерфейс Amazon MWS Scratchpad phpseclib – Могу ли я подключиться с использованием имени пользователя, ключа и пароля (а не ключевой фразы) Локальные жетоны JWT недействительны после обновления их в подходе к проверке подлинности JWT Почему в мой код встраивания Youtube добавляется% E2% 80% 8F? Вывод (эхо / печать) все из массива PHP Получить сегодня коптовую дату Полезный класс базы данных PHP

как загрузить файл на основе blob из базы данных MySQL в PHP?

Как я могу создать PHP-скрипт, который позволит мне загрузить файл из базы данных в MySQL. У меня есть следующая таблица с именами files которых загруженный файл сохраняется в поле на основе BLOB .

 +-------+----------+----------+------------+-------------------+--------+ |fileID | fileName | fileType | fileSize |fileData | userID | +-------+----------+----------+------------+-------------------+--------+ | 1 | file1 | JPEG | 211258 |[BLOB - 206.3 KiB] | 1 | | 2 | file2 | PNG | 211258 |[BLOB - 201.3 KiB] | 1 | +-------+----------+----------+------------+-------------------+--------+ 

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

Я пробовал этот запрос, где параметры передаются (fileID, fileName, fileType) на страницу download.php:

 $id = mysqli_real_escape_string($link, $_GET['fileID']); $name = mysqli_real_escape_string($link, $_GET['fileName']); $type = mysqli_real_escape_string($link, $_GET['fileType']); $SELECT = "SELECT * FROM files WHERE fileID = $id AND fileName = $name "; $result = mysqli_query($SELECT, $link); $result = mysqli_fetch_assoc($result); header("Content-type: $type"); echo $result['fileData']; 

Но это приводит к пустой странице без вывода.

Как загрузить, например, файл1 в виде файла JPEG на мой жесткий диск?

Это наиболее распространенная проблема, с которой сталкиваются при работе с файлом blob, из вашего примера видно, что вы сохраняете «fileType» в качестве расширений файлов (например, jpg для изображений, pdf для файлов pdf и т. Д.), Вы загружаете , Но вместо этого вы можете сохранить тип файла в качестве типа содержимого Mime. Предположим, что если вы загрузите образ jpeg, тип mime будет сохранен в «fileType» как «image / jpeg». Аналогично для pdf он будет храниться как «application / pdf». Я разработал такой код, чтобы загрузить BLOB-файл из базы данных, здесь я предположил, что файлы уже загружены в созданную вами таблицу базы данных

Таблица базы данных "загружает"

| fileID | fileName | fileType | fileSize | fileData | userID |

download.php

  <?php $connection = mysqli_connect("localhost","root"," ",your_database) or die('Database Connection Failed'); mysqli_set_charset($connection,'utf-8'); $id = 1; $query = "SELECT * " ."FROM uploads WHERE userID = '$id'"; $result = mysqli_query($connection,$query) or die('Error, query failed'); list($id, $file, $type, $size,$content) = mysqli_fetch_array($result); //echo $id . $file . $type . $size; header("Content-length: $size"); header("Content-type: $type"); header("Content-Disposition: attachment; filename=$file"); ob_clean(); flush(); echo $content; mysqli_close($connection); exit; ?> 

пожалуйста, найдите полный код blob-upload и скачайте здесь Blob-upload-download

вы можете использовать имя сеанса и сообщения и содержимое файла для загрузки страницы

 session_start(); $_SESSION['filename'] = $filename $_SESSION['file'] = $file <a href="download.php">echo "Download File"</a> 

и в download.php используйте этот код

 session_start(); $filename = $_SESSION['filename']; $file = $_SESSION['file']; header("Content-Disposition: attachment; filename=$filename"); ob_clean(); flush(); echo $file;