前言
在進(jìn)行Web前后端分析開(kāi)始時(shí)抄课,我們經(jīng)常會(huì)碰到文件上傳的需求稀并。上傳用戶(hù)頭像,上傳認(rèn)證材料碟绑、審核材料等俺猿,這些都可以歸類(lèi)為文件上傳功能。
今天主要把自己在開(kāi)發(fā)過(guò)程中的心得進(jìn)行一個(gè)整理格仲,供大家學(xué)習(xí)押袍。
開(kāi)啟靜態(tài)文件中間件
默認(rèn)情況下,靜態(tài)文件(如 HTML凯肋、CSS谊惭、圖像和 JavaScript)是 ASP.NET Core 應(yīng)用直接提供給客戶(hù)端的資產(chǎn)。
開(kāi)啟靜態(tài)文件訪問(wèn),即可以通過(guò)瀏覽器地址輸入http://127.0.0.1:8080/images/1.png訪問(wèn)圖片或其他文件的方式圈盔。需要在中間件中進(jìn)行配置豹芯。
StartUp.cs中Configure方法增加一行代碼。即添加默認(rèn)的靜態(tài)文件中間件驱敲。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseStaticFiles();
}
詳情參考官方文檔:
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files?view=aspnetcore-3.1
文件上傳功能
前后臺(tái)分離項(xiàng)目铁蹈,所以創(chuàng)建WebApi項(xiàng)目。新建一個(gè)控制器众眨,文件名FileController颤绕,開(kāi)始進(jìn)行一個(gè)簡(jiǎn)單的文件上傳編碼喇完。
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];//獲取請(qǐng)求發(fā)送過(guò)來(lái)的文件
var webRootPath = _webHostingEnvironment.WebRootPath;//應(yīng)用程序根目錄
string dirPath = webRootPath + "/UploadFile/" + DateTime.Now.ToString("yyyyMMdd");
//判斷保存的文件夾是否存在,不存在創(chuàng)建
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
if (formFile == null)
{
//保存的文件名稱(chēng)可能存在重復(fù),所以需要在后臺(tái)對(duì)文件進(jìn)行重命名
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 = "未檢測(cè)到上傳的文件" });
}
}
}
參考
ASP.NET Core單文件和多文件上傳并保存到服務(wù)端
The END
本文到此結(jié)束官研,希望對(duì)你有幫助 ??
更多精彩 技術(shù)文章匯總在我的 公眾號(hào)程序員工具集 哀蘑,持續(xù)更新苫拍,歡迎關(guān)注訂閱收藏瓜富。
如果還有什么疑問(wèn)或者建議,可以多多交流纽什,原創(chuàng)文章措嵌,文筆有限,才疏學(xué)淺稿湿,文中若有不正之處铅匹,萬(wàn)望告知。