如何在ASP.Net Core MVC中上传文件
时间: 2024-03-20 16:42:06 浏览: 72
在ASP.Net Core MVC中,可以通过以下步骤来上传文件:
1. 在视图中添加一个表单,并设置enctype属性为"multipart/form-data":
```html
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="file">选择文件</label>
<input type="file" name="file" id="file" class="form-control-file">
</div>
<button type="submit" class="btn btn-primary">上传</button>
</form>
```
2. 在控制器的Action方法中添加参数IFormFile类型的参数来接收文件:
```csharp
[HttpPost]
public async Task<IActionResult> Upload(IFormFile file)
{
// 处理上传的文件
}
```
3. 在Action方法中使用IFormFile的OpenReadStream方法来读取文件内容,并进行相应的处理:
```csharp
using (var stream = new MemoryStream())
{
await file.CopyToAsync(stream);
var content = stream.ToArray();
// 处理文件内容
}
```
4. 可以根据需要保存上传的文件,例如:
```csharp
var filePath = Path.Combine(_environment.ContentRootPath, "uploads", file.FileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
```
注意:需要在Startup.cs中配置文件上传的限制,例如文件大小限制、允许上传的文件类型等:
```csharp
services.Configure<FormOptions>(options =>
{
options.ValueLengthLimit = int.MaxValue;
options.MultipartBodyLengthLimit = int.MaxValue;
options.MemoryBufferThreshold = int.MaxValue;
});
services.AddMvc(options =>
{
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
options.Filters.Add(new RequestSizeLimitAttribute(int.MaxValue));
options.Filters.Add(new DisableFormValueModelBindingAttribute());
options.Filters.Add(new ValidateModelAttribute());
options.Filters.Add(new FormFileUploadFilterAttribute());
});
```
阅读全文