【发布时间】:2013-08-29 14:57:22
【问题描述】:
我有一个创建文件并将其提供给浏览器的 Web 方法。
在 Chrome 中,文本文件只是下载。
在 IE9 中,浏览器询问我是否要打开或保存文件。
我想做的是让浏览器自动打开文件(在该文件类型的默认程序中)
代码:
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public void Test(string docNum, string docVersion)
{
var response = Context.Response;
response.ContentType = "application/octet-stream";
response.AppendHeader("Content-Disposition", "attachment; filename=" + docNum + ".txt");
Byte[] stream = System.Text.Encoding.ASCII.GetBytes("docNum + "," + docVersion);
response.OutputStream.Write(stream, 0, stream.Length);
response.Flush();
}
我通过以下方式唤起它:
http://localhost:12345/Services/Foo.asmx/Test?docNum=123456789&docVersion=1
如何让浏览器只打开文件?
【问题讨论】:
-
您无法强制打开外部程序。如果可以的话,这将是一个巨大的安全风险。
-
@Juhana - 同意;但是,我并不是要强制打开外部程序。我试图让浏览器自动打开文件。我们肯定有链接让浏览器自动打开文件,而不是要求用户选择打开或保存。
-
是的,你不能这样做。自动打开程序完全取决于浏览器和用户。
-
我们有一个旧的冷融合服务做同样的事情,IE 不会询问用户是否应该打开或保存文件。它只是打开它。当我使用此服务时,IE 会询问我。
-
您能具体说明一下文件类型吗?我看到您将文件输出为“八位字节流”。这是一个非常通用的类型。如果您希望浏览器打开 jpg 或 pdf 或 xls,则最好使用更具体的 mime 类型。那么,您输出的是什么类型?
标签: .net web-services asmx