Intereting Posts
Нарушение родительской функции из дочерней функции (PHP Preferrably) PHP – запрашивать одно значение для каждой итерации или извлекать все при запуске и извлекать из массива? Поиск количества узлов в PHP, DOM, XPath Удаление строки запроса в PHP (иногда на основе referrer) обработка больших массивов с помощью array_diff Определение классов, определенных в файле класса PHP Как сохранить значение переменной javascript в переменной php? Symfony2 + Twig, переменная в переводе возвращает «Сообщение должно быть простым текстом» php Установить анонимную функцию в экземпляре Почему file_get_contents работают с google.com, но не с моим сайтом? Максимальная площадь посева для заданного изображения и пропорции Symfony 2.1 Session Local Value и Master Value (чтение на phpinfo) Многочисленные контроллеры Codeigniter и многие методы? Может ли php запрашивать результаты из предыдущего запроса? Почему мой сайт всегда использует ErrorController для всех типов ошибок независимо от кода состояния HTTP?

как заставить пользователей загружать изображение (например, загружать pdf)?

Поэтому я написал галерею изображений с возможностью загрузки исходного изображения (по умолчанию он отображает измененную версию изображения). Я хотел бы знать, как я

Следующий код заставит пользователей сохранять PDF, а не просматривать его в браузере, я хотел бы добиться такого же эффекта для изображений (jpg, gif, png), связав действие click с jQuery, как я смогу это сделать ?

Взято с php.net

<?php // We'll be outputting a PDF header('Content-type: application/pdf'); // It will be called downloaded.pdf header('Content-Disposition: attachment; filename="downloaded.pdf"'); // The PDF source is in original.pdf readfile('original.pdf'); ?> 

HTML:

 <div class="download"> <a href="http://img.ruphp.com/php/abc.jpg"> Download original image</a> </div> 

ЯШ:

 $(".download").click(function(){ // call a php to download the image }); 

Можно ли это сделать?

Изменить: что мне делать в javascript-коде?

Возможно. Сервер (PHP-скрипт) должен отправить заголовок Content-Disposition в качестве показа в вашем первом фрагменте. Например:

 header('Content-Disposition: attachment; filename="abc.jpg"'); 

Это возможно, но IE (какой сюрприз …) имеет тонкую ошибку:

 <?php header( 'Content-Type: ' . $your_content_type . '; charset=UTF-8' ); if( strpos($_SERVER['HTTP_USER_AGENT'],'MSIE') !== false ) header( 'Content-Disposition: attachment; filename="'.rawurlencode($your_filename).'"' ); else header( 'Content-Disposition: attachment; filename="'.addslashes($your_filename).'"' ); ?> 

EDIT : Больше нечего делать в javascript! Просто позвольте пользователю щелкнуть URL-адрес изображения или просто добавить обработчик кликов, который отправит браузер на URL-адрес изображения! На стороне клиента / браузера вы просто не можете решить, следует ли загружать или отображать URL-адрес!

Как правило, решение отображать или загружать выполняется браузером на основе типа MIME. Поэтому я думаю, что это то, что вы хотите:

Если вы просто хотите принудительно загрузить загрузку, используйте функцию header (), чтобы установить Content-type как application / octet-stream.

Поддержка MIME-типа в Internet Explorer нарушена, поэтому он не реагирует на вышеуказанное. Однако, если вы также используете заголовок Content-Disposition, вы также можете заставить MSIE 5 загрузить файл.

Этот заголовок также позволяет указать имя файла. Это работает как в Netscape, так и в MSIE 5.

header ("Content-Disposition: attachment; filename = \" myfile.abc \ "");

Изменить: вот какая-то интересная информация, хотя она может и не соответствовать вашему конкретному прецеденту:

Эта проблема возникает, если выполняются следующие условия:

Имя файла в заголовке размещения контента использует двухбайтовые символы набора символов (DBCS), такие как японские символы. Второй байт или «trailbyte» любого из символов DBCS содержит значения, которые представляют зарезервированные в файловой системе символы в ASCII. Например, «trailbyte» содержит значения, которые представляют значения ASCII, такие как 0x5c или 0x7c.

Редактирование 2: Если вы заинтересованы только в том, чтобы делать это на клиенте, на это был дан ответ: Force Mime Type в браузере (с Javascript)