• ベストアンサー

jpg画像をブラウザで表示ではなくダウンロードさせる方法

http://code.nanigac.com/source/view/461 jpg画像を、ブラウザで表示ではなくダウンロードさせる方法を探していて上記ページにたどり着きました。 上記の例ですと「<a href="download.php?file=test.jpg">」といったようにHTML側に余分な記述が必要になります。 これを「<a href="test.jpg">」というようにシンプルに出来ないでしょうか。 よろしくお願いします。

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

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>octet-stream属性が常につくと、どのようにまずいのでしょうか。 やっていることはMIMEの偽装です。トラブルの元になります。 かといって今回のようなシステムがどうしても必要であれば お勧めはできなくても、やってはいけないとまでは強制できません。 リスクがあることを理解した上で運用してください。

Java-Java
質問者

お礼

>やっていることはMIMEの偽装です。トラブルの元になります。 なるほど。了解しました。 ご回答、ありがとうございました。助かりました!

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>こちらは以前試しました 微妙にずれてますね・・・ まず.htaccessの書き方に工夫が必要です。 RewriteEngine On RewriteRule .*\.jpg? download.php?img=$0 こうしておいて、download.phpを以下のようにします。 <? $img=$_GET["img"]; if(!file_exists($img)){ print "no data"; exit; }; header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"{$img}\""); readfile($img); ?> 場合によっては、!file_exists($img)以下の処理は nodata.jpgなどダミーファイルを読むようにしてもいいかも しれませんね。 で、これを呼び出すファイルをつくってテストしてみてください。 1.jpgを用意して、2.jpgを用意しないようにすればわかりやすい と思います test.htm <img src="1.jpg"> <img src="2.jpg"> <a href="1.jpg">1</a> <a href="2.jpg">2</a>

Java-Java
質問者

お礼

>微妙にずれてますね・・・ 失礼いたしました。早とちりでした。 教えていただいた事を試したところ、うまくいきました! ありがとうございます! >octet-stream属性がついてしまうので、とてもお勧めできる方法では ありません。 すみません。後学のために教えていただきたいのですが、 octet-stream属性が常につくと、どのようにまずいのでしょうか。 よろしくお願いします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>「<a href="test.jpg">」というよう .htaccessなどで読み替えてやればできないことはないでしょう。 ただこれをやってしまうと、jpgのヘッダーに常に octet-stream属性がついてしまうので、とてもお勧めできる方法では ありません。

Java-Java
質問者

補足

>.htaccessなどで読み替えてやればできないことはないでしょう。 こちらは以前試しましたが、ほとんどのブラウザでまともに動いてくれませんでした。 http://faq.creasus.net/04/0606/

関連するQ&A

  • PHP 画像の表示

    プログラミング初心者です。 PHPでブラウザに画像を表示したいのですが映らなくて 以下のソースコードは間違っているでしょうか? <?php $fileName = "img/test.jpg"; //ファイル名 if (file_exists($fileName)) { header('Content-type: image/jpeg'); header('Content-Length: '.filesize("http://localhost:8080/test.jpg")); //あった方が良い readfile("http://localhost:8080/test.jpg"); //ファイルを読み込んで標準出力に書き出し exit; } ?>

    • ベストアンサー
    • PHP
  • PDFファイルのJPG化

    XP,OUTLOOK-E IE6 のユーザです。 ◇従来は、文書ファイルとJPGファイルを別にして送ってもらっていたものですから、そのつもりでHTMLソースを記述しておりました。 ◇今般、画像を添付したメールの送付を受けソースに載せる必要が生じました。 そこでこの画像入り文書ファイルを開いてPRINT SCREENで処理したものをJPG化してタグの<a href="〇〇">・・・・・にして切り抜けましたが、ブラウザ上で粗いものにまりました。 ◇しかし、今後、JPG差し込みつきのWORDで送付してくることが多くあると思いますので、 画質を損なわない方法があればお教え願いたいのです。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • includeでHTMLファイルを呼出してもブラウザで表示されない

    <td><% include("navi.html"); %></td> ブラウザでプレビューしても表示されず、ブラウザでソースを見ても上記のタグのままです。ちゃんと表示される場合はnavi.htmlのソースが見えるはずですよね? PHPがインストールされていないのでは?と思い、2種類のサーバで試しましたが、 PHPがある一方では文字化けするも表示、PHPが怪しいもう一方では上記のタグのままです。 <!--#include file="head.html"-->でも現象は同じでした。 改行コードと文字コードも統一していますし、改善策をどなたかご教授下さい。 ちなみにPHPは詳しくありません。

    • ベストアンサー
    • PHP
  • 画像が表示できない

    ある掲示板の表紙に 自分のHP画像を貼っていたのですが 昨夜からどうしても表示できなくなりました。 HTMLは <img src="http://www.××.ne.jp/××/s03.JPG"> と、半角で、 今まで表示できていた時と変わらないはずなのに 下のようなソースになってしまい 表示できないのです。 でも、他の練習掲示板で試してみると表示できています。 それに、わたしと同じ掲示板の他の人の 掲示板では、その方の書いた画像が表示できています。 HTMLソースは上記のように正しくなっています。 エラーのソースは下記のようなものです。 何が原因でしょうか? <img src="<A href="/redir/?url=http://www.××.ne.jp/××/s03.JPG" target="_blank">http://www.××.ne.jp/××/s03.JPG</A>">

  • 表示できないJPG

    #1.JPGを下記タグでリンクしているのですが ファイル名先頭に#がついていると HTTP エラー 403 が表示されてしまいます。 ファイル名は変更できない状況にあり説明しないといけないのですが 名前の制限事項はmicrosoftのどこかのサイトに記載されていますでしょうか。 <td><a href=TEST\A\#1.JPG>#1.JPG</a></td>  --->NG <td><a href=TEST\A\1.JPG>1.JPG</a></td>   --->OK 環境 Windwos XP IE Ver 6.02900 SP2

    • ベストアンサー
    • HTML
  • AndroidTM 4.1内 検索・ブラウザー

    はじめまして kikipgです。 ご質問いたします。 宜しくお願いします。 ドコモスマフォ galaxy SIII AndroidTM 4.1の 機種(Android)内 ダウンロードフォルダ内に テストページ(xx00.html)ファイルを作り保存し、既存ブラウザーから 検索をし、テストページをブラウザーで表示させたいと思います。 file:///mnt/storage /sdcard0/download/xxxxxx/xx00.htmlと記述しましたが やり方に誤りがあるのか検索・ブラウザー表示ができませんでした。 正しい検索の方法やブラウザーの設定ほうほうがあれば 教えてください。 お手数ですが宜しくお願いします。

  • ファイルダウンロードの問題(HTMLのソースについて)

    HTMLソースについてブラウザからpdf,word,excelのファイルを例えば <A HREF="***.pdf">,<A HREF="***.xls">,<A HREF="***.doc">、のように記述すればダウンロードしてファイルをオープンさせるとブラウザの中で開きますが、なぜ、一太郎の拡張子jsw,jxwのものは、できないのでしょうか? どなたか、開けるようにする対策を知っていたら教えてください。 お願いします。

  • ソースコードを表示するブラウザはありますか?

    次のような機能を持ったブラウザを探しているのですが、このようなものはあるのでしょうか? (1)URLを指定するとそのページのソースコードを表示する。 (2)ソースコード中の<A>タグ(またはURL)をクリックすると、そのURLをIEなどのHTMLを解釈して表示するブラウザに渡して表示させる。

  • 携帯サイトで [プルダウンリンク] を使いたいのですが・・・m(_ _)m

    携帯用サイトを作成しています。 <a href="○○○/~×××/download01.php?sid=<?=$sid?>">ダウンロード1</a><br> <a href="○○○/~×××/download02.php?sid=<?=$sid?>">ダウンロード2</a><br> <a href="○○○/~×××/download03.php?sid=<?=$sid?>">ダウンロード3</a><br> <a href="○○○/~×××/download04.php?sid=<?=$sid?>">ダウンロード4</a><br> <a href="○○○/~×××/download05.php?sid=<?=$sid?>">ダウンロード5</a><br> etc・・・ というPHPを使用したリンク郡を、プルダウンリンクとして一行にまとめたいのですが、 どう記述すれば良いのか教えて頂けないでしょうか。 ちなみに、このCGIは業者に製作してもらいました。 私自身はCGIのスキルはなく、HTMLを記述出来る程度です。 どうぞ、皆様の知恵をお貸し下さい。宜しくお願いします。m(_ _)m

    • ベストアンサー
    • PHP
  • readfile関数はIE以外のブラウザで動作しないのですか?

    ----test.php--------- <?php header("contents-type: video/mpg"); @readfile("http://xxxxx.ne.jp/yyyyy.mpg"); exit(); ?> ----test.php--------- 上の“test.php”を、HTML内に次のように埋め込んで <a href="test.php">MPEG再生</a> ブラウザから“MPEG再生”をクリックすると、IEはきちんとメディアプレイヤが起動して再生してくれますが、 Netscape7.1 とFireFox1.0.4は、再生はおろか、ブラウザ自体が固まってしまいます。 readfile関数はIE以外のブラウザでは動作しないのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう