私はASP.netにWebアプリケーションを作成しています。ASP.Net送信ファイル
サーバーから何かをダウンロードするためのファイルダイアログボックスを表示しようとしています。
ファイルと呼ばれる変数に適切なファイルデータが格納されています。
ファイルのフィールドがあります。 のFileType - MIMEタイプファイルの
ファイルパス - サーバ側のファイルパス
はここで、これまでのコードです:
Response.Clear();
Response.ContentType = file.FileType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + GetFileName(file));
Response.TransmitFile(file.FilePath) ;
Response.End();
GetFileNameは私を取得する機能であります添付ファイルオブジェクトからのファイル名私はパスを保存するだけです。
上記のコードは、クリック時にトリガーするイベントである「Download_Clicked」という機能にあります。イベントはLinkButtonにマップされます。
問題は、上記のコードを実行すると何も起こりません。標準のダイアログボックスは表示されません。
ファイルが存在することを確認し、パスが正しいことを確認するなど、標準的なトラブルシューティングを試みました。彼らはどちらもマーク上で死んでいる。
私のマシンはサーバでもあるので、何とか正しく処理されていない可能性があります。
ありがとうございます。
編集1:別のページにコントロールを入れようとしましたが正常に動作します。
編集2:AJAXアップデートパネルからコントロールを削除して問題を解決しました。
IISはMIMEタイプを認識していますか? "application/octet-stream"を使ってみましたか? –
私はオクテットストリームのMIMEタイプを試みましたが、まだ行っていません。 – wanderingloki
Ajax Updateパネルは、FileUploadコントロールやResponseを使用してファイルをダウンロードするとうまく動作しません。 MSAjaxライブラリには、レスポンスストリームを変更するとエラーがスローされるセキュリティ対策が組み込まれています。動的に生成されるファイルをダウンロードする一般的な方法は、セッション変数にファイルデータを一時的に格納し、ページロード時にセッション変数を特定してブラウザに送信するページにユーザーをリダイレクトすることです。また、httpハンドラでこれを行うこともできますし、アップデートパネルの外にあるファイルアップロード/ダウンロードコントロールをそのまま残すこともできます。 –