Загрузка файлов через проблему PHP на веб-сервер - PullRequest
0 голосов
/ 14 января 2020

Может ли кто-нибудь помочь мне с небольшой проблемой PHP?

Это мой код:

$mr = mysqli_fetch_assoc($ms);
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($mr['flink']) . "\""); 
readfile($mr['flink']);
header("Location: ref.php?action=viewdeti&id=".$_GET['id']);

Где $ mysqli - мое mysql соединение, а $ id - $ _GET ['id'].

$ mr ['flink'] - это ссылка на файл, размещенный на моем сервере.

Теперь проблема:

Когда код размещен на На моем сервере код выполняется успешно и позволяет загрузить файл с локального хоста и перенаправить меня на правильную страницу.

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

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

Версии на сервере apache, mysql, php такое же, как на локальном хосте.

Файлы для скачивания * .pdf

Пожалуйста, если у вас есть идеи, помогите мне.

Спасибо в заранее.

С наилучшими пожеланиями, Россен

Веб-сервер LOCALHOST

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Теперь уже работает нормально. Я перекомпилирую его через UTF8 без B

header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($mr['flink'])) . ' GMT'); 
header('Content-Length: ' . filesize($mr['flink']));

И теперь все нормально.

Спасибо всем за помощь.

0 голосов
/ 14 января 2020
$mr = mysqli_fetch_assoc($ms);

header('Content-Transfer-Encoding: binary');  // mainly for Gecko browsers
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($mr['flink'])) . ' GMT');   // modified date of file, useful with caching 
header('Accept-Ranges: bytes');  // To resume download
header('Content-Length: ' . filesize($mr['flink']));  // file size
header('Content-Encoding: none');    // don't worry about encoding
header('Content-Type: application/pdf');  // mime type if the file is PDF, change if required
header('Content-Disposition: attachment; filename=' . basename($mr['flink']));  // force browser to show the Save As dialog
readfile($mr['flink']);  // actually download the file, required
header("Location: ref.php?action=viewdeti&id=".$_GET['id']);    // copied from question

Каждая строка имеет комментарий, который объясняется.

Наряду с вышеизложенным убедитесь, что фактический файл имеет расширение .pdf. Почему-то кажется, что в файле отсутствует расширение на вашем удаленном сервере.

...