使用C#将文件“即时”写入客户端
我正在使用C#和ASP.NET 2.5。
我想要一种简单的方法来动态生成“文件”(比如本例中的csv文件)并将其传输到客户端而不实际将其写入服务器文件系统。
经过一番搜索和反复试验,我开发了以下内容。 它似乎完全适合该法案。 它应该非常容易适应PHP或任何其他服务器端软件,因为它主要涉及修改标头。
protected void streamToResponse() { Response.Clear(); Response.AddHeader("content-disposition", "attachment; filename=testfile.csv"); Response.AddHeader("content-type", "text/csv"); using(StreamWriter writer = new StreamWriter(Response.OutputStream)) { writer.WriteLine("col1,col2,col3"); writer.WriteLine("1,2,3"); } Response.End(); }
我还建议,如果你有文本以外的东西,比如二进制,你可以使用Response.WriteBinary()方法
我经常创建一个JPG,使用Bitmap.Save()方法将其写入MemoryStream,使用.ToArray()然后使用Response.WriteBinary()将MemoryStream转换为byte []数组。
使用MemoryStream类:
http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx