PHPで、サーバー上のファイルをブラウザからダウンロードするプログラムを組んでいます。

普通のhttpサイトに置いてテストしていた場合、ダウンロードできていたのですが、SSL(https)の本番サーバーに乗せると、「開く」と「保存」で「保存」を選ぶと「Internet Explorerでは、(ファイル名) をダウンロードできません。
このインターネットのサイトを開くことができませんでした。要求されたサイトが使用できないか、見つけることができません。後でやり直してください。」
というエラーがでてしまいます。
「開く」だと普通に開けるので、本当にファイルがないわけではないのですが、原因は何でしょうか。
ちなみにno-cache設定は、していたのですが下記を見てはずしましたのでこれ以外が原因だと思います。
http://www.tsuhtan.net/java/general.html#2

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kura_jet No.1

回答回数42ベストアンサー獲得回数0

ポイント150pt

http://support.microsoft.com/default.aspx?scid=kb;ja;436605

Content-Disposition: attachemnt と Cache-Control: no-cache によるダウンロードの問題

コレが原因では?

回避策としては、セッションをスタートする前に

session_cache_limiter(’public’);

の1行を追加することでダウンロードが可能になりました。

id:golbeza

ありがとうございます、session_cache_limiter(’public’);

を試してみます。

---------------------------------------------

試しました。

session_cache_limiter(’public’);

を記述することでOKでした! ありがとうございます。

Content-Disposition: attachment;

については、

Content-Disposition: attachment; filename=”ファイル名”

という感じでファイル名を指定する際に使用しているのですが、これを表記しないとファイル名が指定できないと思うのですが、これが原因でエラーになるとするとどうすればよいのでしょう・・・(session_cache_limiter(’public’);で上記を記述していてもエラーが出なくなるようですとよいのですが)

2004/11/22 16:09:02
  • id:golbeza
    すいません、コメントが変になっている・・・

    ありがとうございます、session_cache_limiter(’public’);
    を試してみます。

    Content-Disposition: attachment;
    については、
    Content-Disposition: attachment; filename=”ファイル名”
    という感じでファイル名を指定する際に使用しているのですが、これを表記しないとファイル名が指定できないと思うのですが、これが原因でエラーになるとするとどうすればよいのでしょう・・・(session_cache_limiter(’public’);で上記を記述していてもエラーが出なくなるようですとよいのですが)

    ---------------------------------------------
    試しました。
    session_cache_limiter(’public’);
    を記述することでOKでした! ありがとうございます。

    と書いたつもりでした。
    一旦。破線より上をコメントしていて、それに追加して破線以下を書いたので変なことに・・・
  • id:siseiall
    はじめまして。

    PHPで、サーバー上のファイルをブラウザからダウンロードするプログラム」

    のソースを教えていただけませんでしょうか。
    お願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません