如何创build文件并通过ASP.NET MVC中的FileResult返回?

我必须在我的应用程序的ASP.net MVC应用程序创build和返回文件。 文件types应该是正常的.txt文件。 我知道我可以返回FileResult,但我不知道如何使用它。

public FilePathResult GetFile() { string name = "me.txt"; FileInfo info = new FileInfo(name); if (!info.Exists) { using (StreamWriter writer = info.CreateText()) { writer.WriteLine("Hello, I am a new text file"); } } return File(name, "text/plain"); } 

此代码不起作用。 为什么? 如何与stream结果做到这一点?

编辑(如果你想要试试这个stream)

 public FileStreamResult GetFile() { string name = "me.txt"; FileInfo info = new FileInfo(name); if (!info.Exists) { using (StreamWriter writer = info.CreateText()) { writer.WriteLine("Hello, I am a new text file"); } } return File(info.OpenRead(), "text/plain"); } 

你可以尝试这样的事情

 public FilePathResult GetFile() { string name = "me.txt"; FileInfo info = new FileInfo(name); if (!info.Exists) { using (StreamWriter writer = info.CreateText()) { writer.WriteLine("Hello, I am a new text file"); } } return File(name, "text/plain"); } 

打开文件到StreamReader ,并将该stream作为parameter passing给FileResult:

 public ActionResult GetFile() { var stream = new StreamReader("thefilepath.txt"); return File(stream.ReadToEnd(), "text/plain"); } 

另一个创build和从ASP NET MVC应用程序下载文件的例子,但文件内容创build在内存(RAM) – 在飞行中:

 public ActionResult GetTextFile() { UTF8Encoding encoding = new UTF8Encoding(); byte[] contentAsBytes = encoding.GetBytes("this is text content"); this.HttpContext.Response.ContentType = "text/plain"; this.HttpContext.Response.AddHeader("Content-Disposition", "filename=" + "text.txt"); this.HttpContext.Response.Buffer = true; this.HttpContext.Response.Clear(); this.HttpContext.Response.OutputStream.Write(contentAsBytes, 0, contentAsBytes.Length); this.HttpContext.Response.OutputStream.Flush(); this.HttpContext.Response.End(); return View(); }