2
$image_name = rawurldecode($name);
$image_path = 'http://' . rawurldecode($path) . '/resources/images/banner/' . $image_name;
$mime = explode('.', $image_name);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Type: image/' . $mime[1]);
header("Content-Disposition: attachment; filename=$image_name");
header('Content-Transfer-Encoding: binary');
ob_clean();
flush();
readfile($image_path);
У меня этот код выше, он работает нормально в моем локальном, но когда я загружаю его на свой сервер, я все еще могу его загрузить, но изображение сломано. вы можете видеть верхнюю часть изображения, а нижняя часть - серая.Загрузка изображения в PHP
У вас есть ошибка? Можно ли загружать внешние URL-адреса в вашу установку PHP? Вы уверены, что адрес сервера существует? Вы просмотрели данные файла изображений, чтобы узнать, есть ли там что-нибудь полезное? Похоже, что это не полная загрузка изображения - может быть, размер, может быть, ваш буфер слишком быстро сбрасывается. Возможно, ваша длина контента неверна. – h2ooooooo
Почему вы настраиваете контент-тип три раза? Почему вы не устанавливаете его для типа содержимого изображения в любое из этих времен? – Quentin
@Quentin Последним вызовом 'content-type' является' header ('Content-Type: image /'. $ Mime [1]); '(что, если быть справедливым, все еще неверно.' Image/jpg' неверен - OP не может просто взять расширение и предположить, что он является допустимым типом mime. Это даже хорошо и ожидает, что URL-адрес всегда будет включать расширение). 'image.txt.png' также завершится с ошибкой и выведет mimetype' image/txt'. – h2ooooooo