我希望这是一个简单的问题,我希望。我需要写一些报告,然后让用户提示将其保存到他/她的本地机器。我最后一次这样做,我写一个文件到网络服务器,然后通过Response对象时,它发送到客户端。

以创建web服务器上的

            TextWriter tw = new StreamWriter(filePath);

要发送到客户端

           page.Response.WriteFile(path);

现在的问题是,有没有办法到物理文件写入跳到到Web服务器,并从代表文件的响应对象右走?

有帮助吗?

解决方案

您可以使用这样的Response.ContentType

Response.ContentType = "text/plain";
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.AddHeader("Content-Disposition", "attachment;filename=yourfile.txt");

如果你想要写一个文本文件,这当然工作。如果你想要写,例如,你改变的ContentType一个.doc到“应用程序/ msword”等等......

其他提示

可以。

尝试这种情况:

Table oTable = new Table();
//Add data to table.

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename="test.xls"");
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.Html32TextWriter oHtmlTextWriter = new System.Web.UI.Html32TextWriter(oStringWriter);
0Table.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();

此将给出提示用户打开或保存TEST.XLS文件。 类似地,可以代替表提供其他ASP.NET对象。

page.Response.WriteFile(yourData, 0, yourData.Length);

确切回答这个问题要看你有你的报告做组织(即什么是“对象”你指的是)。如果你有一个字符串,您可以使用Response.Write只写它。如果你需要一个TextWriter,Response.Output是你想要的 - 这样你可以跳过写入磁盘,然后使用WriteFile的。另外,如果你的内容正好是二进制的,你可以使用Response.OutputStream为。

您可能还需要设置Response.AddHeader(“内容处置”,“附件”),如果你希望用户看到一个保存文件对话框。然而,内容处置不一定兑现,因此用户仍可能会收到报告直接在浏览器中打开。记住,你在输出前设置头的实际内容!

另外,根据该报告的格式,你可能要Response.ContentType设置为适合诸如文本/平原,文本/ CSV或任何有你的东西。正确的MIME类型列在 IANA的网站

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top