.net core下对于附件上传下载的实现示例
程序员文章站
2022-04-25 20:34:13
本篇主要介绍下文件的上传与下载。分享给大家,具体如下:
文件上传下载也是系统中常用的功能,不啰嗦,直接上代码看下具体的实现。
文件上传
.net core通过 ifo...
本篇主要介绍下文件的上传与下载。分享给大家,具体如下:
文件上传下载也是系统中常用的功能,不啰嗦,直接上代码看下具体的实现。
文件上传
.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(); } }
总结
文件的上传下载的基本操作简单介绍了下,大家可以尝试下。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 浅谈Angular的$q, defer, promise
下一篇: 教你如何一分钟看懂照片的直方图