文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ASP.NET Core 中的文件上传与下载功能实现

2024-11-29 22:37

关注

一、文件上传

在ASP.NET Core中,文件上传通常通过HTTP的multipart/form-data请求完成。下面是一个简单的文件上传接口示例:

创建一个简单的文件上传模型

public class FileUploadViewModel
{
    public IFormFile File { get; set; }
}

在Controller中添加文件上传的Action

[HttpPost]
public async Task UploadFile(FileUploadViewModel model)
{
    if (model.File == null || model.File.Length == 0)
    {
        return BadRequest("No file uploaded.");
    }

    var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/uploads", model.File.FileName);

    using (var stream = new FileStream(filePath, FileMode.Create))
    {
        await model.File.CopyToAsync(stream);
    }

    return Ok(new { fileName = model.File.FileName });
}

在这个例子中,我们创建了一个名为UploadFile的POST方法,它接受一个FileUploadViewModel类型的参数。这个方法会检查是否有文件被上传,如果没有,则返回BadRequest。如果有文件,它会在服务器的wwwroot/uploads目录下创建一个新文件,并将上传的文件内容写入这个文件。

二、文件下载

文件下载通常是通过HTTP的GET请求实现的。下面是一个简单的文件下载接口示例:

在Controller中添加文件下载的Action

[HttpGet("download/{fileName}")]
public IActionResult DownloadFile(string fileName)
{
    var pathToFile = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/uploads", fileName);
    var memoryStream = new MemoryStream();
    using (var stream = new FileStream(pathToFile, FileMode.Open))
    {
        stream.CopyTo(memoryStream);
    }
    memoryStream.Position = 0;
    return File(memoryStream, "application/octet-stream", fileName);
}

在这个例子中,我们创建了一个名为DownloadFile的GET方法,它接受一个文件名作为参数。这个方法会找到服务器上的对应文件,并将其内容读入一个MemoryStream中。然后,它通过设置HTTP响应的Content-Type为application/octet-stream来指示浏览器下载文件,而不是在浏览器中显示它。最后,它将文件名作为下载文件的默认名称。

三、注意事项和安全性考虑

四、总结

在ASP.NET Core中实现文件上传和下载功能是一个常见的需求。通过使用IFormFile接口和FileStream类,我们可以轻松地处理这些任务。然而,当处理用户上传的文件时,安全性应该是首要考虑的因素。通过遵循上述的最佳实践和建议,你可以确保你的应用程序在处理文件时是安全和高效的。

来源:程序员编程日记内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯