时间:2021-05-28
本篇主要介绍下文件的上传与下载。分享给大家,具体如下:
文件上传下载也是系统中常用的功能,不啰嗦,直接上代码看下具体的实现。
文件上传
.net core通过 IFormFile 接收文件对象,再通过流的方式保存至指定的地方。
[HttpPost("upload")]//[DisableRequestSizeLimit] //禁用http限制大小[RequestSizeLimit(100*1024*1024)] //限制http大小public async Task<IActionResult> Post(List<IFormFile> files){ try { if (files == null || !files.Any()) return AssertNotFound(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))//System.IO.File.Create(filefullPath) { file.CopyTo(fs); fs.Flush(); } fileList.Add(new FileResultModel { Name = fileName, Size = file.Length, Url = $@"/file/download?fileName={newName}" }); } result.FileResultList = fileList; return AssertNotFound(result); } catch(Exception ex) { return AssertNotFound(new ResponseFileResult { Result = false, Code = ResponseCode.UnknownException, ErrorMessage = ex.Message }); }}其中http会默认限制一定的上传文件大小,可通过 [DisableRequestSizeLimit] 禁用http限制大小,也可通过 [RequestSizeLimit(1024)] 来指定限制http上传的大小。
文件下载
相对于上传,下载就比较简单了,找到指定的文件,转换成流,通过.net core自带的 File 方法返回流文件,完成文件下载:
[HttpGet("download")]public async Task<IActionResult> Get(string fileName){ try { var addrUrl = Path.Combine(Directory.GetCurrentDirectory(), BASEFILE, $@"{fileName}"); FileStream fs = new FileStream(addrUrl, FileMode.Open); return File(fs, "application/vnd.android.package-archive", fileName); } catch(Exception ex) { return NotFound(); }}总结
文件的上传下载的基本操作简单介绍了下,大家可以尝试下。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
偶尔听人说用nginx实现文件上传下载,之前看nginx实践大致看到过,没有细究。所以今天就想研究下nginx实现文件的上传下载,直接开搞,本地服务启起。这
本文实例讲述了Java实现的文件上传下载工具类。分享给大家供大家参考,具体如下:这是一个在Eclipse环境下采用Java语言实现文件上传下载的工具类。和之前介
本文实例讲述了python实现的简单FTP上传下载文件的方法。分享给大家供大家参考。具体如下:python本身自带一个FTP模块,可以实现上传下载的函数功能。#
springboot整合vue实现上传下载文件,供大家参考,具体内容如下环境springboot1.5.x完整代码下载:springboot整合vue实现上传下
一、Socketserver实现FTP,文件上传、下载 目录结构 1、socketserver实现ftp文件上传下载,可以同时多用户登录、上传、下载