创建文本文件并下载

hig*_*gsy 27 c# asp.net file download

我正在尝试写入内存中的文本文件,然后下载该文件而不将文件保存到硬盘.我正在用它StringWriter来写内容:

StringWriter oStringWriter = new StringWriter();
oStringWriter.Write("This is the content");
Run Code Online (Sandbox Code Playgroud)

我如何下载此文件?

编辑:这是答案的组合,给了我我的解决方案.这里是:

StringWriter oStringWriter = new StringWriter();
oStringWriter.WriteLine("Line 1");
Response.ContentType = "text/plain";

Response.AddHeader("content-disposition", "attachment;filename=" + string.Format("members-{0}.csv",string.Format("{0:ddMMyyyy}",DateTime.Today)));
Response.Clear();

using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8))
{
    writer.Write(oStringWriter.ToString());
}
Response.End();
Run Code Online (Sandbox Code Playgroud)

小智 17

这解决了我:

        MemoryStream ms = new MemoryStream();
        TextWriter tw = new StreamWriter(ms);
        tw.WriteLine("Line 1");
        tw.WriteLine("Line 2");
        tw.WriteLine("Line 3");
        tw.Flush();
        byte[] bytes = ms.ToArray();
        ms.Close();

        Response.Clear();
        Response.ContentType = "application/force-download";
        Response.AddHeader("content-disposition", "attachment;    filename=file.txt");
        Response.BinaryWrite(bytes);
        Response.End();     
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 15

您可以直接将数据写入响应流,而不是将数据存储在内存中然后将其发送到响应流:

using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8)) {
  writer.Write("This is the content");
}
Run Code Online (Sandbox Code Playgroud)

该示例使用UTF-8编码,如果您使用其他编码,则应更改该编码.


Kla*_*sen 5

基本上,您通过实现IHttpHandler接口来创建HttpHandler .在该ProcessRequest方法中,您基本上只需将文本写入context.Response.您还需要添加一个Content-Dispositionhttp标头:

context.Response.AddHeader("Content-Disposition", "attachment; filename=YourFileName.txt");
Run Code Online (Sandbox Code Playgroud)

还记得设置ContentType:

context.Response.ContentType = "text/plain";
Run Code Online (Sandbox Code Playgroud)