首先先在View中加入上傳檔案的input
<div class="form-group">
<label for="Files" class="control-label">Files</label>
<input name="Files" type="file" multiple class="form-control" />
</div>
另外上面的from要多加一段宣告enctype="multipart/form-data"
,才能夠接收到檔案
<form method="post" action="/News2/Create" enctype="multipart/form-data">
接著在我們Controller中要怎麼取得檔案呢?
單一檔案:IFormFile
複數檔案:IFormFileCollection
、IEnumerable<IFormFile>
、List<IFormFile>
、ICollection<IFormFile>
在Dto中依你的需求宣告以上的類別,那我們這邊示範接收多個檔案
namespace Kcg.Dtos
{
public class NewsCreateDto
{
public string Title { get; set; }
public string Contents { get; set; }
public int DepartmentId { get; set; }
public DateTime StartDateTime { get; set; }
public DateTime EndDateTime { get; set; }
public List<IFormFile> Files { get; set; }
}
}
接著我們把它存在目錄下
foreach (var item in news.Files)
{
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/uploads", item.FileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await item.CopyToAsync(stream);
}
}
最後我們來試試看能不能成功取到資料並上傳成功
選擇兩個檔案,按下Create後,可以發現檔案成功的傳到指定目錄下了
範例檔:下載