9

添付ファイルの名前に問題があります。グーグルクロームでサイトを呼び出すと、正しい名前と拡張子のファイルが返されます。Internet Explorerでテストしましたが、問題なく動作します。問題はFirefoxだけにあります。サイトに電話すると、ファイルタイトルの最初の単語が返され、拡張子は返されません。

たとえば、「My report.docx」というファイルが必要な場合は、「My」というファイルになります。私はグーグルで調べましたが、ブラウザがヘッダーを異なる方法で読み取るため、これは人々に共通の問題であることがわかりました。彼らは、修正はファイル名を引用することだと言った:

Content-Disposition: attachment; filename=My Report.docx

今です:(引用符に注意してください)

Content-Disposition: attachment; filename="My Report.docx"

しかし、それは私にはうまくいきませんでした。

Chromeでは、「My Report.docx」(実際には引用符付き)が返されました。Firefoxは、適切な拡張子と適切な名前を持ち、引用符がない奇妙なファイルを返しましたが、実行できませんでした。それは適切なファイルサイズ、適切な拡張子、適切な名前でしたが、実行できませんでした。また、ファイル名の前後にスペースを返します。

4

2 に答える 2

5

これは非常に古い質問ですが、最近同じ問題が発生していました。解決策は次のいずれかです

  1. RFC2184に従ってファイル名をエンコードするか、
  2. ファイル名に特殊文字が含まれていない場合は、コンテンツ処理文字列で引用してください。

すでに2を試したので、1を使用して、それがどのように機能するかを確認できます。

通常、ContentDispositionクラスを使用してヘッダーを生成します。

Dim contentDispositionHeader = New Net.Mime.ContentDisposition() With {.FileName = filename}
Response.AddHeader("Content-Disposition", contentDispositionHeader.ToString())

お役に立てれば。

于 2012-11-27T06:39:38.143 に答える
4

これは期待どおりに機能するはずです。同じ問題を抱えた別のSOqがあります。

また、Mozillaページ(これを参照していると思います):

サーバーサイドコードの詳細はわかりませんが、確認/試してみることがいくつかあります。

  • サーバーでPHPを利用できる場合、上記の最初のリンクのコードを試すことができますか?そうでない場合は、おそらくネット上で選択した言語で何かを見つけることができます。そうすることで、問題がコードにあるのか、それとも他の場所(サーバーのセットアップ、ブラウザーなど)にあるのかを確認できます。
  • これは他のクライアントマシン(つまり、ダウンロードを試みる場所)で発生していますか、それともそのマシンでのみ発生していますか?他の人に確認してもらうことをお勧めします。
  • これはIE/Safariまたは他のブラウザで正常に機能していますか?wgetコマンドラインなどを使用して、またはcurlコマンドラインから実行することもできます。
  • Content-Typeヘッダーも正しく提供していますか?
  • 他のファイルまたは別のタイプのファイル(aまたはaなど)をダウンロードしてみて.pngください.xls。実際、おそらく最も簡単なのは、プレーンテキストファイル(text/plain)を試して、そこから取得することです。

お役に立てれば。

于 2012-02-06T01:37:17.273 に答える