.NET Core 实现文件上传下载详解
51 浏览量
更新于2024-08-04
收藏 17KB DOCX 举报
“ASP.NET编程知识——.NET Core下附件上传下载的实现示例”
在ASP.NET框架中,尤其是在其最新版本.NET Core中,文件上传和下载是常见的功能需求。这篇文档将详细介绍如何在.NET Core环境下处理文件上传和下载操作。
一、文件上传
在.NET Core中,文件上传主要通过`IFormFile`接口来处理。这个接口允许我们从HTTP请求中获取上传的文件。以下是一个简单的文件上传控制器方法的示例:
```csharp
[HttpPost("upload")]
[RequestSizeLimit(100 * 1024 * 1024)] // 设置文件大小限制为100MB
public async Task<IActionResult> Post(List<IFormFile> files)
{
try
{
if (files == null || !files.Any())
return NotFound(new ResponseFileResult { Result = false, Code = ResponseCode.InvalidParameters, ErrorMessage = "附件不能为空" });
string filePath = Path.Combine(Directory.GetCurrentDirectory(), "BASEFILE", "Template");
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
var result = new ResponseFileResult();
var fileList = new List<FileResultModel>();
foreach (var file in files)
{
var fileModel = new FileResultModel();
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
var newName = Guid.NewGuid().ToString() + Path.GetExtension(fileName);
var fileFullPath = Path.Combine(filePath, $@"{newName}");
using (FileStream fs = new FileStream(fileFullPath, FileMode.Create))
{
await file.CopyToAsync(fs);
fileModel.Name = newName;
fileList.Add(fileModel);
}
}
result.Result = true;
result.Files = fileList;
return Ok(result);
}
catch (Exception ex)
{
return StatusCode(StatusCodes.Status500InternalServerError, ex.Message);
}
}
```
在这个例子中,我们首先检查是否有文件上传,并设置了一个100MB的文件大小限制。然后,我们创建一个用于存储文件的目录(如果不存在的话)。对于每个上传的文件,我们生成一个新的唯一文件名,将文件保存到指定路径,并将相关信息添加到响应结果中。
二、文件下载
文件下载通常涉及生成一个HTTP响应,包含指向要下载文件的URL或直接提供文件内容。以下是一个简单的文件下载控制器方法的示例:
```csharp
[HttpGet("download/{filename}")]
public IActionResult Download(string filename)
{
string filePath = Path.Combine(Directory.GetCurrentDirectory(), "BASEFILE", "Template", filename);
if (!System.IO.File.Exists(filePath))
return NotFound();
var fileBytes = System.IO.File.ReadAllBytes(filePath);
var contentType = MimeMapping.GetMimeMapping(filename);
return File(fileBytes, contentType, filename);
}
```
在这个例子中,我们根据传入的文件名查找文件,读取文件内容到字节数组,然后返回一个`FileResult`,指定文件类型(MIME类型)和建议的文件名,供浏览器下载。
总结
在.NET Core中处理文件上传和下载,我们需要理解`IFormFile`接口的使用,以及如何通过流操作来处理文件内容。同时,要注意设置适当的文件大小限制以防止恶意大文件上传,确保文件路径的安全性,以及正确处理可能的异常情况。文件下载时,我们可以通过HTTP响应来提供文件内容,让浏览器触发下载行为。这些基础技巧在构建任何支持文件操作的ASP.NET Core应用程序时都至关重要。
2023-05-15 上传
2023-05-15 上传
2023-05-15 上传
2023-05-15 上传
2023-05-15 上传
2023-05-15 上传
2023-05-15 上传
2023-05-15 上传
2023-05-15 上传
mmoo_python
- 粉丝: 2258
- 资源: 1万+
最新资源
- 单片机串口通信仿真与代码实现详解
- LVGL GUI-Guider工具:设计并仿真LVGL界面
- Unity3D魔幻风格游戏UI界面与按钮图标素材详解
- MFC VC++实现串口温度数据显示源代码分析
- JEE培训项目:jee-todolist深度解析
- 74LS138译码器在单片机应用中的实现方法
- Android平台的动物象棋游戏应用开发
- C++系统测试项目:毕业设计与课程实践指南
- WZYAVPlayer:一个适用于iOS的视频播放控件
- ASP实现校园学生信息在线管理系统设计与实践
- 使用node-webkit和AngularJS打造跨平台桌面应用
- C#实现递归绘制圆形的探索
- C++语言项目开发:烟花效果动画实现
- 高效子网掩码计算器:网络工具中的必备应用
- 用Django构建个人博客网站的学习之旅
- SpringBoot微服务搭建与Spring Cloud实践