使用打开/保存对话框将字符串保存到客户端

Posted

技术标签:

【中文标题】使用打开/保存对话框将字符串保存到客户端【英文标题】:Save string to client with Open/Save dialog 【发布时间】:2011-03-26 23:12:49 【问题描述】:

我正在使用以下代码将字符串的内容(转换为字节数组)写入 ASP.NET/C# 中的客户端

byte[] data = StrToByteArray(strData);
Response.ClearContent();
Response.AppendHeader("content-length", data.Length.ToString());
Response.ContentType = "text/plain";
Response.AppendHeader("content-Disposition", "attachment;filename=" + fileName);
Response.BinaryWrite(data);
Response.Flush();

fileName 是以文件扩展名 (.pgn) 结尾的文件的名称。但是,该文件保存为 .txt 文件,忽略了我给它的扩展名。这与 Response.Contenttype = "text/plain" 有关吗?如何让“打开/保存”对话框显示并保存正确的 (.pgn) 文件名?

此外,如果文件名是由破折号或空格分隔的字符串,则打开/保存对话框出现时,文件名不会完整显示,但会在第一个破折号 (-) 或空格(或逗号)处被截断遇到。如何解决这个问题?

【问题讨论】:

【参考方案1】:

    是的,由于您的内容类型(MIME 类型),它正在保存 .txt。使用图片/png。

    删除破折号和空格怎么样? String.Replace 很棒。 fileName.Replace("-", "");等等

【讨论】:

您好,谢谢,我使用了替换,但该文件确实是一个文本文件,但扩展名为“pGn”(不是 png)。在 IE 中保存正确,但在 Firefox 中保存为 .png.txt 我最终解决了。如果我想使用不同的扩展名,我必须使用“application/octet-stream”作为 ContentType。

以上是关于使用打开/保存对话框将字符串保存到客户端的主要内容,如果未能解决你的问题,请参考以下文章

如何使用另存为对话框将创建的 excel 实例保存到客户端的磁盘

js如何保存文件

保存对话框以下载文件,将文件从 ASP.NET 服务器保存到客户端

从 Base64 字符串保存图像不会打开 [重复]

如何使用 EWS 保存对话历史消息并使其正确显示在对话历史文件夹中

将文件保存到目录