ASP.NET Core 返回文件、用戶下載文件,從網站下載文件,動態下載文件


ASP.NET Core 中,可以在靜態目錄添加文件,直接訪問就可以下載。但是這種方法可能不安全,也不夠靈活。

我們可以在 Controller 控制器中 添加 一個 Action,通過此Action,即可訪問服務器的任何文件。


Action 格式

    public FileResult Down()
        {
        return File(xxx,xxx,xxx);
        }

返回 FileResult 類型,File() 對象

就這么簡單。


File() 對象

問題在於這個 File() 對象,應該怎么寫

筆者舉個例子

在100%無錯的條件下,文件路徑 F:\a.txt

1,創建一個文件流 FileStream

2,獲取文件類型 Content-Type,可以用代碼獲取,也可以用字符串填寫

3,設置文件名

 

var stream = System.IO.File.OpenRead(“F:\a.txt”);  //創建文件流

 txt 的文件類型為 text/plain

 設置文件名為 b.txt

那么返回的File 代碼如下

return File(stream, "text/plain", “b.txt");

就這么簡單。


獲取文件類型

C#獲取文件類型可以參考

http://www.cnblogs.com/zzsdream/articles/5796763.html

關於文件類型對應得Context-Type

http://tool.oschina.net/commons/

 

筆者附上小方法

//引入
using System.IO;

var contentype = MimeMapping.GetMimeMapping(fileName);      //獲取文件類型

動態獲取文件

 public FileResult DownSH(string DownM)  //要下載文件碼
        {
            var path = _sqlContext.jexusSqls.FirstOrDefault(a => a.DownM == DownM.ToString()).FilePath;  //在數據庫查找此文件碼的文件地址
            if (!System.IO.File.Exists(path)) return null;

            var stream = System.IO.File.OpenRead(path);  //創建文件流

            return File(stream, "application/x-sh", DownM+".sh");
        }

 

編寫方式多種多樣,只需要解決文件流、文件類型、文件名,這三個核心即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM