2012-07-12 75 views
0

我在单击生成按钮时生成几个文件。在成功生成文件然后存储在服务器上之后,用户被呈现相同的文件,以便他可以下载它。强制从javascript打开一个文本文件(文件位于服务器上)

我试着将扩展名改为一个已知的扩展名,这个扩展名不能被浏览器直接打开,这个扩展名是.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

任何帮助?

+0

看到这个[SO问题](http://stackoverflow.com/questions/4253299/how-to-open-the-save-as-dialog-on-click-of - 形象) – Shai 2012-07-12 13:58:06

回答

3

将响应MIME类型设置为"application/octet-stream"并可选地设置文件名。

实施例:

response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); 
response.AddHeader("Content-Type", "application/octet-stream"); 
+0

我的回应是一个字符串。你正在创建一个HTTP响应? – seedg 2012-07-12 15:49:28

+0

确切地说,它是System.Web.HttpResponse实例。 – jorel 2012-07-12 16:10:13

相关问题