Я искал похожие запросы / вопросы, но, похоже, ничего не соответствует моей ситуации.
Я использую файл PHP для отправки / вывода загруженных файлов в браузер.Я называю файл PHP файлом «читателя».Ниже приведена развернутая версия программы чтения (для простоты удалены дополнительные типы файлов):
<?php
if($_GET['upload']){ // for files uploaded via CMS uploader
$file = $site_directory . $uploads_path . $_GET['upload'];
}
if (file_exists($file)) {
header('Content-Description: File Transfer');
// JPG
if(strstr($file,".jpg"))
{
header('Content-type: image/jpeg');
header('Content-Disposition: inline; filename='.basename($file));
// OTHER FILE TYPES
}else
{
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
}
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}else{
echo "<p>That file does not exist.</p>";
}
?>
Как вы увидите в следующем примере, в целом это работает.Но когда браузер должен загрузить несколько изображений таким образом, некоторые из них не будут загружаться / выглядеть как поврежденные.Вы можете увидеть пример этого в действии здесь: http://www.technotarek.com/index.php?id=25&view=grid. Если вы сначала не видите разбитых изображений в сетке фотографий, попробуйте несколько серьезных обновлений.
Есть идеи, почему это не надежно для нескольких файлов / изображений?
Обратите внимание, что у меня есть дополнительный скрипт, который изменяет размеры изображений в примере, но это не преступник.Я удалил его, и проблема осталась.
Дополнительные сведения (о том, почему я использую этот метод): я изначально начал использовать скрипт / файл для чтения на сайтах, где администраторы сервера не разрешали загрузку на веб-сервер, но вместо этого требовали, чтобы все пользовательские загрузки былихраниться на отдельном изолированном сервере.Файл «reader» позволяет мне получать доступ к этим файлам и выводить их, поскольку прямой URL-адрес файлов sandlot невозможен.