Поэтому я написал галерею изображений с возможностью загрузки исходного изображения (по умолчанию он отображает измененную версию изображения). Я хотел бы знать, как я
Следующий код заставит пользователей сохранять 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)