0

生成ボタンをクリックすると、いくつかのファイルが生成されます。サーバーに保存されるファイルの生成が成功すると、ユーザーは同じファイルを提示され、ダウンロードできるようになります。

拡張子を、ブラウザで直接開くことができない既知の拡張子である.docに変更してみました。これは、ファイルをダウンロードすることを示すポップアップショーとして機能しました。

ただし、拡張子を.cfgなどのより意味のあるものに変更したいと思います。問題は、.cfgまたは.txtを使用すると、ブラウザがファイルを自動的に開くことです(テキストファイルであるため)。これをオーバーライドするにはどうすればよいですか?

コードは次のとおりです。

c#サーバー側:

 string[] L_TextFile = P_Data.M_Content.Split('|');
 System.IO.File.WriteAllLines(@"c:\files\file.cfg", L_TextFile);
 response = "1";
 return response;

extjs ajax呼び出し成功コード:

success: function(P_Response){
    var res = Ext.util.JSON.decode(P_Response.responseText);
    if(res == '1') window.location.href'/files/file.cfg';
    else ShowError('An error has occured while generating the text file.');                                                                                                                                                                                                                         
},

基本的に、すべてが.docで正常に機能しますが、.cfgに変更したいと思います。

何か助けはありますか?

4

1 に答える 1

3

応答MIMEタイプをに"application/octet-stream"設定し、オプションでファイル名を設定します。

例:

response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
response.AddHeader("Content-Type", "application/octet-stream");
于 2012-07-12T14:03:51.510 に答える