1

私はファイルを返すコントローラーのメソッドを持っています

public FileResult DownloadFile(int id)
{
    var file = _repository.GetInidividualFile(id);
    return File(file.FileBinary, file.ContentType, file.FileName);
}

ファイルオブジェクトは値を正しく返していますが、IE9はコンテンツタイプを取得していません。私が持っているファイルタイプの現在のリストは次のとおりです。

'application / pdf'

'application / vnd.openxmlformats-officedocument.spreadsheetml.sheet'

'application / vnd.ms-excel'

他のすべてのブラウザは正常に動作しているようですが、IEは拡張機能を無視しているようです。私が抱えている問題は、ファイルが拡張子なしでダウンロードされているため、ユーザーはファイルを開くアプリケーションを選択するように求められますが、ユーザーにはわからないということです。

Firefox、Chrome、Safari、Operaで試してみましたが、すべて問題ありません。

返される値を示すデバッガーのビューは次のとおりです

デバッグ

コンテンツタイプを示すフィドルからの出力は次のとおりです。

HTTP / 1.1 200 OK

サーバー:ASP.NET開発サーバー/10.0.0.0

日付:2013年2月19日火曜日10:16:41 GMT

X-AspNet-バージョン:4.0.30319

X-AspNetMvc-バージョン:3.0

コンテンツ-処分:添付ファイル; filename="プロビジョニングツール"

キャッシュ制御:プライベート

コンテンツタイプ:application / vnd.openxmlformats-officedocument.spreadsheetml.sheet

コンテンツ-長さ:491470

接続:閉じる

4

1 に答える 1

1

少しいじった後、私はついにこれが何であるかを見つけました。IEは、コンテンツタイプがあるにもかかわらず、ファイル名に拡張子が付いていることを期待しています。それで、

return File(file.FileBinary, "application/pdf", "test");

動作しませんが

return File(file.FileBinary, "application/pdf", "test.pdf");

します。

于 2013-02-19T15:49:23.397 に答える