• ベストアンサー

アンカーでダウンロード?

本当はエクセルのファイルなんですけど、 勘違いから以下のようなコードを組んでしまいました。 <a href="hoge/test.zip">test</a> そうしたら偶然にもダウンロードの表示がされることが分かりました。 こういう使い方もできるのかと思いながら、 いつもの如くこのサイトを検索していたら以下のFAQを見つけました。 http://okwave.jp/qa/q5333524.html 私と全く同じことをしているのですが、 こちらの回答ではいずれもHTMLだけでは厳しいというものでした。 ひょっとして私のやっていることは仕様的には誤りなのでしょうか?

  • HTML
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

とんでもない誤解をされています。 本来、それがどのようなデータであれ、サーバーからファイルを提供するときにファイルの実体より前に、改行を二個はさんで、HTTP応答ヘッダが送られてきます。  firefoxにLive HTTP Headerというアドオンがありますが、それを使うとブラウザとサーバー間でどのようなやり取りをしているかわかります。  その応答ヘッダで、 content-type:application/octet-stream  が指定されていると、ファイルの種類に関わらず、ダウンロードするべきです。  あなたのウェブサイトに「download」というフォルダーを作成し、そこに AddType application/octet-stream * と記述した .htaccess というファイルを置いておけば、そのファイルがabc.htmlだろうと、abc.hogeだろうと、すべてダウンロードされるべきです。  メモ帳で作成するときは名前をつけて保存で".htaccess"と""で括らないと、ファイル名のないファイルは保存できません。  では、なぜ、exeや、zip がダウンロードされるかと言うと、サーバーの設定で、これらの拡張子を持つファイルは、application/octet-streamと指定されているからに過ぎません。ここを間違えないように・・  ただ、Windowsは、他のOS--UNIX,Linux,Macなどと異なり、ファイルの拡張子で動作を決める--ルール違反の仕様なので、たとえサーバーからそのような応答ヘッダが付けられていても、htmlなら、ブラウザで起動しようとするバグがありました。(現在走りません)  .zipがダウンロードされるのは偶然でもなんでもなくて、サーバーとあなたのブラウザの設定がそのように指定されているからで、すべての人に有効なわけではありません。Windows(とIE)だけが、特殊なので、たまたまそのように動作するだけです。

uzume_z
質問者

お礼

ご回答有り難うございます。 やはり先生に叱られてしまいました>< そんな気がしていたので質問してみました。案の定でした。 サーバとブラウザ、両方の組み合わせが重要なのですね。 .htaccessは時々見かけたのですが、 こういう用途があったのですね。 調べて見たところサーバの方でも対応している必要が あるとのことなので、ちょっと聞いてみます。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

そちらとは事情が違いますので。 通常、アンカーをクリックした場合 ・その先がhtmlだったら、そのページをブラウザで表示する ・その先がzip等のバイナリファイルだったらダウンロードする という動作をするのが普通でしょう。 これが逆だと、次のページに飛ぶたびにダウンロードになって、zipをダウンロードしようとすれば画面にわけのわからない文字が表示される、という事態になります。 その質問の場合は、表示されるはずのhtmlをダウンロードさせるようにする、という通常とは違うことをしたい、というものだったので、htmlでは難しい、が回答になっているものです。 ついでに言えば、この動作は「ブラウザの仕様」であって、htmlの仕様ではありません

uzume_z
質問者

お礼

ご回答有り難うございます。 あちらでもエクセルのファイルをDLさせたいような 記述があったので、勘違いをしたようですね。 こういう使い方が出来ると分かって芸風が広がりそうです。

  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.1

「ひょっとして私のやっていることは仕様的には誤りなのでしょうか?」  そんなことはありません。アンカーで、画像でも動画でもExcelでもプログラムなどの実行ファイルでも、何でも埋め込めます。例えば、MP3ファイルを埋め込めば、「保存」でダウンロードしたり、「実行」で再生させることも出来ます。

uzume_z
質問者

お礼

早速のご回答有り難うございます。 こういう芸当が可能なんですね。 私としては宝物を発見したような気分でした。

関連するQ&A

  • コードの表示

    以下のコードを echo &#0039;<a href="https://hoge">&#0039;hoge&#0039;</a>&#0039;; 以下のようにブラウザ上に表示したいのですがどのようにすればいいですか? <a href="http://hoge">hoge</a>

  • PHPの正規表現で一部のURLを抜き出したい

    <a href="../hoge/hoge/hoge123.htm">テスト1</a><br> <a href="../hoge/hoge/hoge124.htm">テスト2</a><br> <a href="../hoge/hoge/hoge125.htm">テスト3</a><br> <a href="../hoge/hoge/hoge126.htm">テスト4</a><br> <a href="../hoge/hoge/hoge127.htm">テスト5</a><br> このような文字列があり「../hoge/hoge/hoge126.htm」だけをマッチさせたい場合はどのような正規表現を書けばよいでしょうか?回答宜しくお願いします。 *URL内の文は使わず、テスト1、テスト2・・・と<a href="、">を使ってくださいお願いします。

    • 締切済み
    • PHP
  • ページ内部アンカー 移動

    <a href="index.html#QA">質問</a> <h2id="QA">質問</2> -------------------------- これで、部分的に移動できますが、 ここだけ、大文字で指定してある事が多いようですが #QA id="QA" とか、 小文字と大文字どっちが良いのでしょうか? HTMLとXHTMLで区別しているようにも思えませんし どっちでもよいのですか?

    • ベストアンサー
    • HTML
  • コードをもっとスマートにする方法はありませんか?

    PHPを学び始めた者です。 現在自サイトのリンク集を動的に作成しております。 各ページのURLを読み込み特定URL文字があった場合は書き換えを行なっているのですが、数が多くなり(300件以上)コードが増えてきました。 出来るだけ管理しやすくスマートにしたいのですが何か方法ありませんか? ~略~ if(strstr($item['link'], "hoge1.")){ $blog = "<a href=\"http://hoge1.hogehoge.com/\">hoge1さん</a>"; }elseif(strstr($item['link'], "hoge2.")){ $blog = "<a href=\"http://hoge2.test.com/\">hoge2さん</a>"; }elseif(strstr($item['link'], "test3.")){ $blog = "<a href=\"http://test3.hogehoge.com/\">test3さん</a>"; }elseif(strstr($item['link'], "/")){ $blog = "<a href=\"http://#\">未登録</a>"; }; ~略~

    • 締切済み
    • PHP
  • Dreamweaver ライブラリ

    Dreamweaver のライブラリ機能便利なので使っているのですが、ライブラリ内で<a href="hoge">と指定して各ページ更新すると、実際のHTMLが<a href="/Library/hoge">となってしまいます。 これを実際の書き出されたHTMLでも<a href="hoge">のままにしたいのですが、何か設定変えれば出来るとか、書き方を変えればできるとかありますか?

    • 締切済み
    • CSS
  • html メールリンクにて自動ファイル添付

    お世話になっています。 htmlのa href="mailto:"についてお聞かせください。 outlook2003を使用しています。 mailtoのリンクを押した場合、自動で添付ファイルをつけれるかを調査中です。 調べてみると http://okwave.jp/qa/q5068164.html には無理 http://okwave.jp/qa/q3928972.html には出来る とあり、どちらが正しいのかわかりません。 試しに以下のコードを組んでみました。 <a href="mailto:宛先?Attachment=C:\file.text">テスト</a> この場合、宛先のみセットされ、添付ファイルはつきません。 (ファイルはあります。) Attachmentをattachmentに変えたり、attachに変えたりしても変わりません。 どなたかわかる方、ご教授お願い致します。

    • ベストアンサー
    • HTML
  • カッコを使った文字列の分割について

    文字列がいくつか存在し(個数不定)、そのそれぞれの文字列はカンマで区切られております。 その中には、文字列+カッコに挟まれた文字列、というのも存在します。 ex1) hoge,test(hogehoge),nana その文字列をカンマで区切り、それぞれをaタグで結びます。 ex2) <a href="hoge">hoge</a>/<a href="test(hogehoge)">test(hogehoge)</a>/<a href="nana">nana</a>/ ---現段階で自力で完成したのはここまでです--- 今度はそのうち、カッコで区切られているモノも分割し、aタグで結ぼうと思います。 ex3) <a href="hoge">hoge</a>/<a href="test">test</a>(<a href="hogehoge">hogehoge</a>)/<a href="nana">nana</a>/ このように扱いたいのですが、どうすればいいでしょうか。 参考までにex2までのソースを張っておきます。 お返事、お待ちしております。 以下、ソース抜粋 $LOADSNG="hoge,test(hogehoge),nana"; $EXPSNG=split(",",$LOADSNG); foreach($EXPSNG as $KEYSNG=>$VALSNG){ echo ($KEYSNG==0?"":"/").'<a href="'.$VALSNG.'">'.$VALSNG.'</a>'; }

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

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

    • ベストアンサー
    • PHP
  • Chromeで内部リンクがリンク先にジャンプしない

    現在、ホームページの作成をしております。HTMLで内部リンクを設定したのですが、GoogleChromeにて1回目ジャンプ先に遷移せず、コンテンツの内容が少し上にずれてしまいます。再度クリックすると、内部リンク先にジャンプしますが、ずれてしまったコンテンツは直りません。 【具体例】 HTMLは以下のように記述しています。 <a href="#Hoge">Hogeへリンク</a> ・・・(1) HTMLsource <a id="Hoge" name="Hoge">Hogeのリンク先です</a> GoogleChrome6.0でテストしております。 お手数をお掛け致しますが、コンテンツのズレと内部リンクにジャンプしない事象の対応方法をご存知の方がおられましたらご教授頂きたく、宜しくお願い申し上げます。

    • ベストアンサー
    • HTML
  • オリジナルタグをHTMLタグに置換する方法

    ユーザにHTMLの知識がなく、オリジナルのタグを入力させることによって HTMLタグに置換をするということをPHPで実現したく思っています。 <@hoge@@こちら@> とtextareaに入力したものを <a href="hoge.html">こちら</a> という形にしたいのです。 ereg("<@([^@@]*)@@([^@>]*)@>",$string,$regs);で「hoge」と「こちら」を 取得することはできますが、オリジナルタグが1行に複数ある (例:<@hoge1@@こちら1@>、<@hoge2@@こちら2@>)場合、ereg関数で 取得しようとしても最初の「hoge1」と「こちら1」しか取得できません。 これを <a href="hoge1.html>こちら1</a>、<a href="hoge2.html">こちら2</a> と置換するにはどのようにしたらよろしいでしょうか? 使っている関数が間違っているのか、関数の使い方を間違っているのか わかりません。 どなたかお分かりになる方いましたらヒントだけでも結構ですので 教えていただけませんでしょうか。 環境はphp4.1.0です。mbregexはインストールしています。 お手数ですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう