Здравствуйте! Помогите разобраться в проблеме. Хочу, что бы при нажатии на ссылку, браузер выдавал диалоговое окно на сохранение картинки. Если использовать просто <a href=".."></a>, картинка просто открывается в новом окне, а хотелось бы все-таки диалоговое.
для этого есть специальный заголовок. из скрипта вызывается типа так: Код (Text): header('Content-Disposition: attachment; filename="download.jpg"'); если надо отдавать статические файлы из определенной папки, то можно настроить .htaccess. примерно так: Код (Text): <IfModule mod_headers.c> <FilesMatch "\.(jpg|gif|png)$"> ForceType application/octet-stream Header set Content-Disposition "attachment" Allow from all </FilesMatch> </IfModule естественно надо чтобы mod_headers был подключен
После вставки следующего кода Код (Text): header('Content-Type: image/jpeg'); header('Content-Disposition: attachment; filename="'.htmlspecialchars($_GET['name']).'"'); header('Content-Length: '.filesize($file)); файл на скачку запускается, однако при попытке его открытия на локальном компьютере возникает ошибка "невозможно прочитать заголовок файла файл имеет неизвестный формат". Отмечу, что размер и название строятся корректно. В чем может быть проблема?
Внутри в смысле в скаченном файле? Ну я смог определить, что размер не совпадает с тем, что на сервере. Видимо не хватает еще какого-то заголовка, хотя я могу ошибаться
там в файле может оказаться текст ошибки. Добавлено спустя 30 секунд: ну и тупо не с тем расширением сохранен
Может быть кто-нибудь посмотрит на конкретном примере? http://www.oldos.ru/kids/test/ Красная ссылка "Скачать" под фотографией как раз реализует этот функционал.
Тут есть две распространённые ошибки: 1. На сервере всплывает сообщение об ошибке (Notice, Error, Warrning), которое успешно отдаётся клиенту внутри файла-изображения. Можно просто пробежаться "глазами" по получаемому файлу и обнаружить эти ошибки. Обычно там же указано место, где произошла ошибка 2. В файл-изображение, отправляемое пользователю, вставляется в самом начале пустая строка. Лечится просто: уничтожением закрывающего php-тэга (?>) во всём проекте в конце всех файлов
Предположу, что автор залип на операции "заглянуть в файл". По Enter винда ему пытается открыть картинку, а картинка битая. Как еще можно в файл заглянуть у автора нет идей, а спросить стесняется. Заглянуть можно хотябы Блокнотом. Если там некий текст, ты его увидишь. Будет над чем работать дальше.
Нет, как заглянуть в файл, я догадался) И обнаружил там действительно лишний код, точнее даже не просто лишний код, а всю html страницу. И сейчас думаю, как это могло произойти. Собственно, на этом месте и залип. Есть у кого-нибудь идеи, откуда там не просто лишние артефакты, а довольно большой объем html кода? Добавлено спустя 10 минут 44 секунды: Почему-то размер скаченного файла - 0 байт. Добавлено спустя 7 минут 38 секунд: Ура, я разобрался! Все спасибо за подсказки! Не знаю, правильный способ или нет, но вдруг кому-нибудь понадобится. Весь код следующий: Код (Text): header('Content-Type: image/jpeg'); header('Content-Disposition: attachment; filename="'.htmlspecialchars($_GET['name']).'"'); header('Content-Length:'.filesize($file).''); header('Cache-Control: no-cache'); header('Content-Transfer-Encoding: chunked'); readfile($file);