publicvoid ConfigureServices(
IServiceCollection services)
{
;IfileProvider>(
new PhysicalFileProvider(
Pa(), "wwwroot")));
();
}
publicvoid Configure(
IApplicationBuilder app,
IHostingEnvironment env)
{
a(routes =>
{
rou(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
添加一個(gè)控制器和操作方法來(lái)上傳和下載文件。
[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile file)
{
if (file == null || == 0)
return Content("file not selected");
var path = Pa(
Direc(), "wwwroot",
());
using (var stream = new FileStream(path, FileMode.Create))
{
await (stream);
}
return RedirectToAction("Files");
}
public async Task<IActionResult> Download(string filename)
{
if (filename == null)
return Content("filename not present");
var path = Pa(
Direc(),
"wwwroot", filename);
var memory = new MemoryStream();
using (var stream = new FileStream(path, FileMode.Open))
{
await (memory);
}
memory.Position = 0;
return File(memory, GetContentType(path), Pa(path));
}
用HTML表單添加一個(gè)Razor頁(yè)面來(lái)上傳文件。
<form asp-controller="Home" asp-action="UploadFile" method="post"
enctype="multipart/form-data">
<input type="file" name="file" />
<button type="submit">Upload File</button>
</form>
討論上傳
ASP.NET Core MVC 模型綁定 提供了 IFormFile 接口來(lái)上傳一個(gè)或多個(gè)文件。HTML表單必須將 編碼 類(lèi)型設(shè)置為 multipart / form-data, 并將type屬性設(shè)置為 file的 輸入 元素 。
你也可以通過(guò)接收一個(gè)IFormFile in action方法的列表來(lái)上傳多個(gè)文件, 并設(shè)置 具有多個(gè) 屬性的input元素 。
// In Controller
[HttpPost]
public async Task<IActionResult> UploadFiles(List<IFormFile> files)
// In HTML
<input type="file" name="files" multiple />
您也可以將 IFormFile 作為操作方法接收的模型的屬性。
publicclass FileInputModel
{
public IFormFile FileToUpload { get; set; }
}
[HttpPost]
public async Task<IActionResult> UploadFileViaModel(FileInputModel model)
注意
輸入元素上的名稱(chēng)必須與模型綁定工作的操作參數(shù)名稱(chēng)(或模型屬性名稱(chēng))匹配。這與簡(jiǎn)單和復(fù)雜類(lèi)型的模型綁定沒(méi)有區(qū)別。
下載
Action方法需要返回 FileResult 與 流, byte [] 或文件的虛擬路徑。您還需要知道 正在下載的文件的 內(nèi)容類(lèi)型。這是一個(gè)示例(快速/臟)實(shí)用程序的方法。
private string GetContentType(string path)
{
var types = GetMimeTypes();
var ext = Pa(path).ToLowerInvariant();
return types[ext];
}
private Dictionary<string, string> GetMimeTypes()
{
returnnew Dictionary<string, string>
{
{".txt", "text/plain"},
{".pdf", "application/pdf"},
{".doc", "application;},
{".docx", "application;},
{".xls", "application;},
{".xlsx", "application
o;},
{".png", "image/png"},
{".jpg", "image/jpeg"},
{".jpeg", "image/jpeg"},
{".gif", "image/gif"},
{".csv", "text/csv"}
};
}
1.《.net如何實(shí)現(xiàn)文件上傳?我來(lái)告訴你答案基礎(chǔ)教程:上傳/下載ASP.NET Core 2.0中的文件》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《.net如何實(shí)現(xiàn)文件上傳?我來(lái)告訴你答案基礎(chǔ)教程:上傳/下載ASP.NET Core 2.0中的文件》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/gl/2143008.html