Intereting Posts

Силовой браузер для загрузки изображения с помощью javascript window.open?

Есть ли способ сделать изображение загружаемым после нажатия на него (без щелчка правой кнопкой мыши сохранить изображение как )?

Я использую небольшую функцию Javascript для вызова страницы загрузки:

<a href="#" onclick="window.open('download.php?file=test.jpg', 'download', 'status=0');" >Click to download</a> 

На странице download.php у меня есть что-то вроде:

 $file = $_GET['file']; header('Content-Description: File Transfer'); header("Content-type: image/jpg"); header("Content-disposition: attachment; filename= ".$file.""); readfile($file); 

Но это не сработает. Что я делаю не так?
Заранее спасибо!

Solutions Collecting From Web of "Силовой браузер для загрузки изображения с помощью javascript window.open?"

Используйте application / octet-stream вместо image / jpg :

Если заголовок [Content-Disposition] используется в ответе с типом содержимого приложения / октета-потока, подразумеваемое предложение состоит в том, что пользовательский агент не должен отображать ответ, а непосредственно вводить «save response as …» диалог.
– RFC 2616 – 19.5.1 Content-Disposition

Я думаю, вы забыли добавить Path в заголовок

 if(isset($_GET['file'])){ //Please give the Path like this $file = 'images/'.$_GET['file']; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } } 

Или вы можете использовать файл .htaccess для всех ваших файлов изображений. Если вы хотите заставить браузер загружать все ваши изображения (fe из списка таблиц):

 RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} ^download$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .(jpe?g|gif|png)$ index.php?file=noFoundFilePage [L,NC] RewriteCond %{QUERY_STRING} ^download$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule .(jpe?g|gif|png)$ - [L,NC,T=application/octet-stream] 

Это ищет файлы изображений, которые пытаются загрузить их в браузер. -f RewriteConds также проверяет, что файл exsist .. Последнее правило гарантирует, что загрузка используется только для определенных типов файлов.

Это сработало для меня

 header("Pragma: public"); header('Content-disposition: attachment; filename='.$title); header("Content-type: ".mime_content_type($sample_file)); header('Content-Transfer-Encoding: binary'); ob_clean(); flush(); readfile($sample_file); 

Я также добавил следующее .htaccess

 SetEnvIf Request_URI "\.jpg$" requested_jpg=jpg Header add Content-Disposition "attachment" env=requested_jpg 

Не уверен, что это помогает?

Если вы находитесь на сервере Apache, это очень просто.

  1. Создайте файл с именем .htaccess в каталоге, в котором находятся ваши файлы. Для меня это были assets/.htaccess .
  2. Добавьте в файл AddType application/octet-stream .jpg . Вы можете добавить новую строку для каждого расширения файла, которое вам нужно. Например, AddType application/octet-stream .pdf
  3. Сохраните файл
  4. Очистить кеш браузера
  5. Обновите свой браузер и наслаждайтесь!

После того, как вы добавили заголовок Content-Disposition: attachment , вы сможете использовать обычную ссылку:

 <a href="download.php?file=test.jpg">Click to download</a> 

С какими браузерами вы это пробовали?

Это кнопка, которую вы можете щелкнуть в Internet Explorer, чтобы загрузить рис.

 <html> <head> <title>Your title</title> </head> <body> <form><input type="button" value="Click Me" onClick="window.location.href='image.jpg'"></form> </body> </html> 

Браузеры распознают URL's jpg и передают их так же, как и .htm, поэтому я не думаю, что вы можете заставить его использовать user-end (но не положительно).

Прочитай это

http://apptools.com/phptools/force-download.php

Посмотрите, помогает ли это:

Файл Webkit и Excel (PHPexcel)

Попробуйте изменить это:

 header("Content-disposition: attachment; filename= ".$file.""); 

Для того, чтобы:

 header("Content-disposition: attachment; filename= ".$file); 

Если приведенное выше не работает для вас, здесь функция принудительно загружает файл:

  <?php function downloadFile($file, $type) { header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=$file"); header("Content-Type: Content-type: $type"); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($file)); readfile($file); } downloadFile("sd.jpg", "image/jpg"); ?> 

Вот способ заставить все файлы в определенном каталоге запрашивать загрузку.

требование

  1. апаш
  2. Включено mod_headers

В конфигурации .htaccess или Apache введите следующее.

 <Directory /path/to/downloadable/files> Header set Content-Disposition attachment Header set Content-Type application/octet-stream </Directory>