1. 程式人生 > 其它 >十七、.NET CORE上傳附件方法(From表單上傳)

十七、.NET CORE上傳附件方法(From表單上傳)

 

下面程式碼中@Model.TypeID 為我的傳得另外引數,可以換成自己需要的。

<form class="layui-form" method="post" enctype="multipart/form-data" action="/api/EnvironUpgrade/FileSave?id=@Model.TypeID">
<div class="layui-form-item">
<label class="layui-form-label">選擇升級檔案:</label>
<div class="layui-input-block">
<input type="file" class="layui-upload-choose" name="files" />
<button class="layui-btn" lay-submit="" type="submit" lay-filter="submit">上傳</button>
</div>
</div>

</form>

//控制器方法

檔案會傳到List<IFormFile> files這裡面,然後後面id是我的另外引數

[HttpPost]
public async Task<IActionResult> FileSave(List<IFormFile> files, string id)
{
if (files.Count == 0)
{
return Ok(new RtnObj { code = false, msg = "升級檔案上傳失敗,未找到檔案", data = "" });
}

////核心開始
string filesName = "";
string suffix = "";
filesName = DateTime.Now.ToString("yyyyMMddhhmmss");
IFormFile file = files as IFormFile;
long size = files.Sum(f => f.Length);
string folder = webRootPath + "\\FileUpload\\UpgradeFile\\" + id;
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
if (files != null && files.Count > 0)
{
//suffix = files[0].FileName.Split('.')[files[0].FileName.Split('.').Length - 1];
suffix = System.IO.Path.GetExtension(files[0].FileName);
string fileTxt = folder + "\\" + id + "-" + filesName + suffix;
if (!System.IO.File.Exists(fileTxt))
{
//驗證檔案是否存在,如果存在刪除?
//根據具體業務處理
//檔名稱年月日時分秒基本上不會重複,後期遇到問題可以新增隨機數
}
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
using (var stream = new FileStream(fileTxt, FileMode.Create))
{
await formFile.CopyToAsync(stream);
}

////核心結束
}
}
}
return Ok(new RtnObj { code = true, msg = "升級檔案上傳成功", data = "檔名稱:" + id + "-" + filesName + suffix });
}