使用Extension显示和下载文本文件

时间:2012-07-02 11:14:07

标签: asp.net-mvc-3 c#-4.0

我想读取一个日志文件(txt文件)并在txt文件中查看它并以txt格式保存。 这是我的代码,它可以很好地显示和下载txt文件中的读取内容,我几乎没有问题..

public FileResult Download(string id)
    {
        int rowId = Convert.ToInt32(id);
        LoadFileInfoCache();
        var fileDetails = from ff in _currentFileDetails
                          where ff.FileId == rowId
                          select new
                          {
                              name = ff.FileName,
                              location = ff.FileLocation
                          };
        var fileDetailsList = fileDetails.ToList();
        string fileLocation = fileDetailsList[0].location;
        string fileName = fileDetailsList[0].name;            
        string contentType = "application/txt";
        var file = System.IO.File.Open(fileLocation, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
        var stream = (Stream)(file);
        return File(stream, contentType, fileName);
    }

当我点击保存按钮时,在保存为窗口时我想要带扩展名的文件名。但它只显示我的文件名。   并且在textfile中,标题名称应该是filename.txt,但它为我的代码显示了Filename [1]。 任何人都可以请一些想法在标题中显示带有extn的文件名并另存为窗口。

1 个答案:

答案 0 :(得分:1)

更新了代码

public FileResult FileOutput()
            {
                string filename = "alokdida.txt";
                string filepath = "C:\\logs\\Structured_Exception_Log.txt";

                return File(filepath, "application/octet-stream", filename);
            }

这应该适合你。

第二次修改(请参见粗体字代码更改后的代码)

public FileResult Download(string id)
    {
        int rowId = Convert.ToInt32(id);
        LoadFileInfoCache();
        var fileDetails = from ff in _currentFileDetails
                          where ff.FileId == rowId
                          select new
                          {
                              name = ff.FileName,
                              location = ff.FileLocation
                          };
        var fileDetailsList = fileDetails.ToList();
        string fileLocation = fileDetailsList[0].location;
        string fileName = fileDetailsList[0].name+".txt"; // Here you need to append the .txt
        string contentType = "application/txt";
        var file = System.IO.File.Open(fileLocation, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
        var stream = (Stream)(file);
        return File(stream, contentType, fileName);
    }
相关问题