画像をダウンロードさせたい!ダウンロード方法を教えてください

このQ&Aのポイント
  • いろいろなファイルがサーバーにあがっているとして、その一覧が表示されているとします。ファイル名を押下した時にダウンロードさせたいと思っています。
  • CSV, PDF, ZIPファイルなどはダウンロードできるようになりましたが、JPEG, GIF, PNGなどの画像はブラウザに表示されてしまい、ダウンロードできません。
  • 画像も強制でダウンロードさせたいのですが、よい方法はありますか?
回答を見る
  • ベストアンサー

画像をダウンロードさせたい。

いろいろなファイルがサーバーにあがっているとして、 その一覧が<a href="">ファイル名</a>で表示されているとします。 ファイル名を押下した時にダウンロードさせたいと思っています。 -------------------------------------------------- header("Content-Disposition: inline; filename=".$fileDlName); header("Content-Length: ".$fileDlSize); header("Content-Type: application/octet-stream"); readfile($filePath) ------------------------------------------------- ↑でCSV,PDF,ZIPファイルなどはダウンロードできるようになりました。 が、JPEG,GIF,PNGなどはブラウザに表示されてしまい ダウンロードできません。 画像も強制でダウンロードさせたいのですがよい方法はありますか?? ブラウザ:IE7 PHP:5.2.3 Apache:2.0.59 以上、よろしくお願いいたしますm(_ _)m

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

// download.php header("Content-Disposition: attachment; filename=".$fileDlName); header("Content-Length: ".$fileDlSize); header("Content-Type: application/octet-stream"); readfile($filePath) // index.html <a href="download.php/download">download</a> でダメでしょうか?

その他の回答 (1)

noname#39970
noname#39970
回答No.1

>JPEG,GIF,PNGなどはブラウザに表示されてしまい >ダウンロードできません いや それでダウンロード完了だから。 ついでにブラウザは表示までしてくれているだけ。 保存ダイアログを常に出したいというのは流石に難しいので注意書きで「画像は掴んでデスクトップ等にドロップするか右クリックメニューで名前を付けて保存」とでもしたら良い。

関連するQ&A

  • PHPによるファイルのダウンロード

    初めまして最近ちょっとはまってしまっているので分る方がいましたらアドバイスお願いします。 PHPのheader関数を使ってブラウザのダイアログを表示させるファイルのダウンロードを実装した際に、ファイルサイズが大きいものをダウンロードしているとダウンロードが完了するまで他のアクセスが応答しなくなる場合があります。 基本的には $fp = fopen($filePath, "rb"); $contents = fread($fp, filesize($filePath)); fclose($fp); $len = strlen($contents); header("Content-type: application/octet-stream"); header('Content-disposition: inline; filename="' . $filename . '"'); header("Content-length: " . $len); echo $contents; というような一般的な書き方をしています。 ファイルのサイズ的には10MB前後です。 同じような現象を解決された方がいましたらアドバイス頂けると幸いです。

    • 締切済み
    • PHP
  • PHPでのファイルダウンロードについて

    初めて質問させていただきます。 社内用でファイルのアップロード・ダウンロードができるシステムを開発しています。 PCからは問題なくアップロードもダウンロードも行えていたのですが、 スマホからアクセスしてダウンロードをすると失敗してしまいます。 下記のコードを使ってます。 ファイルの種類はいろいろなので、「application/octet-stream」にしてます。 が、それぞれのファイルタイプに合わせて変更させても状況は変わりませんでした。 -- header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); header('Content-Length: '.filesize($dl_file)); readfile($dl_file); exit; -- なにか解決策があるようでしたら、教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • fileのダウンロードとページ移動を続けて行うには?

    初心者です。教えて頂けますか? フォームのボタンを押したらダウンロードする様に作りました。 ボタンを押したらダウンロードとページ移動を続けて行うには どの様にすれば良いでしょうか? header( "Content-Type: application/octet-stream" ); header( "Content-Disposition: attachment; filename=$contentFilePath" ); header( 'Content-Length: '.filesize($contentFilePath) ); readfile($contentFilePath);

    • ベストアンサー
    • PHP
  • ダウンロードが機能しない。

    html,php共に初心者です。教えて頂けますか? ダウンロードボタンを押すと、以下のphpファイルを開きダウンロードを行う様にしたのですが、mac safari ではダウンロード出来たのですが、 windows IE では ダウンロード出来ませんでした。 ファイルの構成は以下です。 /www/category/contentsList.php <-ダウンロードボタンがあります /www/category/downloader.php <-ダウンロードボタンを押すと呼ばれます。 /contentDirectory/ダウンロードするファイル.zip downloader.phpの記述は以下のみです。 <?php $serverDirectory = dirname($_SERVER['DOCUMENT_ROOT']); $contentDirectory = $_POST['contentDirectory']; $fileName = $_POST['fileName']; $filePath = $serverDirectory.'/'.$contentDirectory.'/'.$fileName; header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$fileName.'"'); header('Content-Length: '.filesize($filePath)); readfile($filePath); ?> どうすれば良いでしょうか? 大変申し訳ありません。よろしくお願いします。

    • ベストアンサー
    • PHP
  • ファイルのダウンロードが出来ない

    こんばんは。お世話になっております。 CSVファイルをダウンロードさせるスクリプトを作成したのですが、そのスクリプト(ファイル)を、さくらインターネットのサーバへアップすると「ダウンロードせずにブラウザに表示されるだけ」という状態になってしまいます。(ローカル上や別サーバでは問題ない) ファイル上に記述する、Headerですが、サイトによっていくつかの記述方法があったので、以下のように2種類のHeaderを試していますが、共に「さくらインターネットだけがダウンロードしない」状況です。 ファイルをダウンロードさせるスクリプトは、今回初めて作ってみたのですが、他にどのような対処法があるのかが分かりません。考えられる可能性だけでも結構ですので、アドバイスいただけると幸いです。 //Header("Content-type:application/x-csv;"); //header("Content-Disposition: inline; filename=$fname.csv"); header("Content-Type: application/octet-stream;"); header("Content-Disposition: attachment; filename=$fname.csv"); 以上、お忙しい中恐縮ですが宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • バイナリファイルをブラウザに表示させる時のタイトルバーについて

    バイナリファイルダウンロードに関して伺いたいことがあります。 PHPでバイナリファイル(ExcelやPDF)をブラウザ内にダウンロードさせる場合は、下記のような設定をするかと思います。 header('Content-Type: application/octet-stream'); header('Content-Description: '.$filename); header('Content-Disposition: inline; filename='.$filename); このようにしてブラウザ内での出力は可能なのですが、 この場合ブラウザのタイトルバーにURLが出力されます。 URLはセキュリティ上、表示したくないようなケースの場合 何か設定方法はあるのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 複数ファイルのダウンロード

    PHPで複数のログファイルをダウンロードしたいときはどのようにしたらよいのでしょうか? ログファイルは下記のような形式です。 test_20041001,test_20041002,・・・,test_2004_1031 以前までは、DBから取得したデータをタブ区切りで表示したものを .xlsファイルでダウンロードしていました。 そのときのやり方としては、 //---------------------------------- //ファイルダウンロード //---------------------------------- $fSize = $Sec->getFileSize(ADMIN_RESERVECSV_PATH); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . PATH); header("Content-Length: " . $fSize['B']); readfile(PATH); というような方法です。

    • 締切済み
    • PHP
  • phpでcsvダウンロードできない

    phpで配列をCSV にしてボタンを押すとブラウザからダウンロードさせたいのですが、 htmlタグで表示した後に、ボタンを押すとブラウザからダウンロードさせるには、以下の ヘッダーをhtmlタグより下につけると、機能しなくなってダウンロードできなくなって しまっています。 どうしたらいいのでしょうか。 header('Content-Type:application/octet-stream'); header('Content-Disposition:attachment;filename=data.csv');

    • ベストアンサー
    • PHP
  • 動画をダウンロードするとサイズ0で終了する

    動画をダウンロードするとサイズ0となってしまいます。   動画:AVI、サイズ:122MB プログラムは <?php $file = "".$_GET["id"].".avi"; $file_length = filesize($file); header("Content-Disposition: attachment; filename=$file"); header("Content-Length: $file_length"); header("Content-Type: application/octet-stream"); readfile ($file); ?> で、ファイル名は正常に受け渡されています。 また、サイズも表示させたとこころ正常値でした。 ちなみに、サイズ19MBのAVIで試したところ、正常にダウンロード できました。 サイズの問題だと思うのですが、対応方法をお教え下さい。 宜しくお願い致します。

    • 締切済み
    • PHP
  • IE6でダウンロードさせたい【PHP】

    IE6でダウンロードさせたい【PHP】 現在、PHPからのヘッダ出力を使って ファイルダウンロードさせるプログラムを作成しています。 (PHPスクリプトが呼ばれると、 ダウンロードダイアログが出現する) FireFoxでは問題なく動作するのですが、 IE6だと動作しません。(ダイアログが出ない) ※ちなみに、SSLは使ってません。 --↓ソース------------------- header("Content-Disposition: inline; filename=\"".basename($path_file)."\""); header("Content-Length: ".$content_length); header("Content-Type: application/octet-stream"); readfile($path_file) ---------------------------------- -IE6のHTTPヘッダ(デバッガで抽出)-- HTTP/1.1 200 OK Date: Thu, 20 May 2010 07:35:19 GMT Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 X-Powered-By: PHP/5.2.9 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Disposition: inline; filename="20100520_133719_irai_1.txt" Content-Length: 2415 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/octet-stream ---------------------------------- どなたか解決策に心当たりのある方、ご教授宜しくお願いします!

    • ベストアンサー
    • PHP