问题
ASP。如何从NET Core MVC上传和下载文件
解开
在空项目中,更新Startup类以添加MVC服务和中间件。
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/2147658.html