Загрузить изображение (тип longblob) непосредственно из mysql [duplicate]

3
задан user1386999 22 January 2014 в 20:48
поделиться

2 ответа

Это наиболее распространенная проблема, возникающая при работе с блобом. Из вашего примера, я вижу, что вы сохраняете «fileType» в качестве расширений файлов (например, «jpg» для изображений, «pdf» для файлов PDF и т. Д.), Вы загружаете. Но вместо этого вы можете сохранить тип файла в качестве типа содержимого MIME.

Предположим, если вы загрузили jpeg-изображение - тип MIME будет сохранен в «fileType» в качестве «image / jpeg». Аналогично для pdf он будет храниться как «application / pdf». Я разработал такой код, чтобы загрузить файл blob из базы данных. Я собираюсь предположить, что файлы уже загружены в созданную вами таблицу базы данных.

Таблица базы данных «uploads»

| 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;

// Use a prepared statement in production to avoid SQL injection;
// we can get away with this here because we're the only ones who
// are going to use this script.
$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);
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 здесь .

7
ответ дан brennonbrimhall 1 September 2018 в 04:35
поделиться

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

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;
0
ответ дан meisamphp 1 September 2018 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: