.net core下对于附件上传下载的实现示例
本篇主要介绍下文件的上传与下载。分享给大家,具体如下:
文件上传下载也是系统中常用的功能,不啰嗦,直接上代码看下具体的实现。
文件上传
.netcore通过IFormFile接收文件对象,再通过流的方式保存至指定的地方。
[HttpPost("upload")] //[DisableRequestSizeLimit]//禁用http限制大小 [RequestSizeLimit(100*1024*1024)]//限制http大小 publicasyncTaskPost(List files) { try { if(files==null||!files.Any()) returnAssertNotFound(newResponseFileResult{Result=false,Code=ResponseCode.InvalidParameters,ErrorMessage="附件不能为空"}); stringfilePath=Path.Combine(Directory.GetCurrentDirectory(),BASEFILE,$@"Template"); if(!Directory.Exists(filePath)) Directory.CreateDirectory(filePath); varresult=newResponseFileResult(); varfileList=newList (); foreach(varfileinfiles) { varfileModel=newFileResultModel(); varfileName=ContentDispositionHeaderValue .Parse(file.ContentDisposition) .FileName .Trim('"'); varnewName=Guid.NewGuid().ToString()+Path.GetExtension(fileName); varfilefullPath=Path.Combine(filePath,$@"{newName}"); using(FileStreamfs=newFileStream(filefullPath,FileMode.Create))//System.IO.File.Create(filefullPath) { file.CopyTo(fs); fs.Flush(); } fileList.Add(newFileResultModel{Name=fileName,Size=file.Length,Url=$@"/file/download?fileName={newName}"}); } result.FileResultList=fileList; returnAssertNotFound(result); } catch(Exceptionex) { returnAssertNotFound(newResponseFileResult{Result=false,Code=ResponseCode.UnknownException,ErrorMessage=ex.Message}); } }
其中http会默认限制一定的上传文件大小,可通过[DisableRequestSizeLimit]禁用http限制大小,也可通过[RequestSizeLimit(1024)]来指定限制http上传的大小。
文件下载
相对于上传,下载就比较简单了,找到指定的文件,转换成流,通过.netcore自带的File方法返回流文件,完成文件下载:
[HttpGet("download")] publicasyncTaskGet(stringfileName) { try { varaddrUrl=Path.Combine(Directory.GetCurrentDirectory(),BASEFILE,$@"{fileName}"); FileStreamfs=newFileStream(addrUrl,FileMode.Open); returnFile(fs,"application/vnd.android.package-archive",fileName); } catch(Exceptionex) { returnNotFound(); } }
总结
文件的上传下载的基本操作简单介绍了下,大家可以尝试下。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。