ошибка при загрузке файла из mysql

0

привет я попробовал много исходных кодов для этого, но у меня такая же ошибка во всех них

include 'functii.php';
starts();
opendb();
$query = "SELECT content,`title_real`,`size`,`ext` FROM file WHERE file_id = '3'";

$result = mysql_query($query) or die('Error, query failed');
list($content,$filename,$size,$ext) = mysql_fetch_array($result);

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=$filename.$ext");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$size);

echo $content;

exit; 

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

  • 0
    Извините, но я не думаю, что RDB - это подходящее место для хранения файлов. Но это только мое мнение, основанное на моем опыте.
  • 0
    Можете ли вы дать мне несколько причин? Пожалуйста. это будет полезно
Показать ещё 1 комментарий
Теги:

3 ответа

0
Лучший ответ

Это звучит как проблема с кодировкой. Может быть, файл закодирован в UTF-16, и вы показываете его, как если бы он был ASCII.

  • 0
    Итак, как я могу решить эту проблему?
  • 0
    @ user273386: Сначала нужно выяснить а) в какой кодировке файл хранится в базе данных и б) в какой кодировке вы его отображаете. Если эти два разных, то вам нужна функция преобразования. Смотрите, например, здесь: stackoverflow.com/questions/1196838/…
0

3 вещи:

  • Как сказал Александр.Плютов, у вас есть ошибка в имени файла, это должно быть $filename. '.'. $ext Вам не хватает "." между именем файла и его расширением.
  • Как сказал Марк Байерс, это может показаться проблемой кодирования, вы должны проверить свою кодировку PHP файла, а также свой DB файл.
  • Надеюсь, что вы только запасите текстовый файл, потому что любое другое содержимое файла определенно не должно храниться в базе данных! И даже для текстового файла он не должен использоваться для этого, это не его цель.

В любом другом случае, чем генерация файлов, файлы должны храниться на вашем сервере и могут быть вызваны из вашего БД благодаря пути и имени файла.

0

Попробуйте:

header("Content-Disposition: attachment; filename = $filename . '.' . $ext");

вместо:

header("Content-Disposition: attachment; filename=$filename.$ext");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню