- 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?}"); 
- }); 
- } 
添加一个控制器和操作方法来上传和下载文件。
- [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表单添加一个Razor页面来上传文件。
- <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 接口来上传一个或多个文件。HTML表单必须将 编码 类型设置为 multipart / form-data, 并将type属性设置为 file的 输入 元素 。
你也可以通过接收一个IFormFile in action方法的列表来上传多个文件, 并设置 具有多个 属性的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) 
注意
输入元素上的名称必须与模型绑定工作的操作参数名称(或模型属性名称)匹配。这与简单和复杂类型的模型绑定没有区别。
下载
Action方法需要返回 FileResult 与 流, byte [] 或文件的虚拟路径。您还需要知道 正在下载的文件的 内容类型。这是一个示例(快速/脏)实用程序的方法。
- 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如何实现文件上传?我来告诉你答案基础教程:上传/下载ASP.NET Core 2.0中的文件》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《.net如何实现文件上传?我来告诉你答案基础教程:上传/下载ASP.NET Core 2.0中的文件》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2143008.html

