Думаю, это должно быть легко. У меня есть галерея изображений с разбивкой по страницам, и под каждым изображением есть небольшая ссылка с надписью «Скачать комп». Это должно позволить людям быстро загрузить файл .jpg (с сгенерированным PHP водяным знаком) на свой компьютер.
Теперь я знаю, что могу просто ссылаться прямо на файл .jpg, но для этого необходимо, чтобы пользователь открыл изображение в новом окне, щелкнул правой кнопкой мыши, Сохранить как ... и т. Д. Вместо этого я хочу " Download Comp ", чтобы начать загрузку файла немедленно.
PHP.net, похоже, предлагал использовать readfile (), поэтому каждая ссылка «Скачать комп» отображается как «? Download = true & g = {$ gallery} & i = {$ image}».
Затем в верхней части страницы я вижу, что переменная $ _GET ['download'] установлена, и если да, я запускаю следующий код:
if(isset($_GET['download'])) {
$gallery = $_GET['g'];
$image = $_GET['i'];
$file = "../watermark.php?src={$gallery}/images/{$image}";
header('Content-Description: File Transfer');
header('Content-Type: application/jpeg');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: public');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
}
Ссылка занимает много времени, а затем выдает диалоговое окно с просьбой открыть или сохранить файл, но после сохранения и попытки открыть его, он говорит, что файл поврежден и не может быть открыт.
Есть идеи?