.net web core 如何編碼實現檔案上傳功能

happlyfox發表於2021-05-13

關於我

我的部落格 | 歡迎關注

前言

在進行Web前後端分析開始時,我們經常會碰到檔案上傳的需求。上傳使用者頭像,上傳認證材料、稽核材料等,這些都可以歸類為檔案上傳功能。

今天主要把自己在開發過程中的心得進行一個整理,供大家學習。

開啟靜態檔案中介軟體

預設情況下,靜態檔案(如 HTML、CSS、影像和 JavaScript)是 ASP.NET Core 應用直接提供給客戶端的資產。

開啟靜態檔案訪問,即可以通過瀏覽器地址輸入127.0.0.1:8080/images/1.png訪問圖片或其他檔案的方式。需要在中介軟體中進行配置。

StartUp.cs中Configure方法增加一行程式碼。即新增預設的靜態檔案中介軟體。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{    
  app.UseStaticFiles();
}

詳情參考官方文件:

docs.microsoft.com/zh-cn/aspnet/co...

檔案上傳功能

前後臺分離專案,所以建立WebApi專案。新建一個控制器,檔名FileController,開始進行一個簡單的檔案上傳編碼。

public class FileController : ControllerBase
{
    private static IWebHostEnvironment _webHostingEnvironment;

    public FileController(IWebHostEnvironment hostingEnvironment)
    {
        _webHostingEnvironment = hostingEnvironment;
    }

    public IActionResult UploadFile(IFormFile formFile)
    {
        //var formFile = Request.Form.Files[0];//獲取請求傳送過來的檔案

        var webRootPath = _webHostingEnvironment.WebRootPath;//應用程式根目錄
        string dirPath = webRootPath + "/UploadFile/" + DateTime.Now.ToString("yyyyMMdd");
        //判斷儲存的資料夾是否存在,不存在建立
        if (!Directory.Exists(dirPath))
        {
            Directory.CreateDirectory(dirPath);
        }

        if (formFile == null)
        {
            //儲存的檔名稱可能存在重複,所以需要在後臺對檔案進行重新命名
            string fileExtesion = Path.GetExtension(formFile.FileName);
            string fileName = Path.GetFileName(formFile.FileName) + "_" + Guid.NewGuid().ToString() + "." + fileExtesion;

            //儲存檔案
            using (var fs = System.IO.File.Create(webRootPath + "/" + fileName))
            {
                formFile.CopyTo(fs);
            }

            return new JsonResult(new { success = true, errMsg = "檔案上傳成功" });
        }
        else
        {
            return new JsonResult(new { success = false, errMsg = "未檢測到上傳的檔案" });
        }

    }

}

參考

ASP.NET Core單檔案和多檔案上傳並儲存到服務端

The END

本文到此結束,希望對你有幫助 ?

更多精彩 技術文章彙總在我的 公眾號程式設計師工具集 ,持續更新,歡迎關注訂閱收藏。

如果還有什麼疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

福利姬

公眾號後臺回覆:“關注禮包”,獲取價值5K的視訊學習資源

公眾號後臺回覆:“技能圖譜”,送你一份最全的開發者技能圖譜

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章