分享一个可多个文件同时上传、断点续传,并实时反馈上传进度的 asp.net core 组件。
服务器端
引用 nuget 包:jms.fileuploader.aspnetcore
然后启用上传组件:
app.useauthorization(); app.mapcontrollers(); //启用上传组件,并限制单个文件最大100m app.usejmsfileuploader(1024*102400); app.run();
在 controller 里面,写个 test 函数,处理上传的文件:
[apicontroller] [route("[controller]/[action]")] public class maincontroller : controllerbase { [httppost] public string test([frombody] object body) { var customheader = request.headers["custom-header"]; //临时文件路径 var filepaths = request.headers["filepath"]; //文件名 var filenames = request.headers["name"]; return filenames; } }
文件上传完毕,保存在临时文件中,request.headers["filepath"] 可以读取这些文件的路径,如果确定要保留这些文件,用 file.move 把它们移到你的目标文件夹当中;
request.headers["name"] 则是读取文件名。
前端
引入 jms-uploader 组件:
import jmsuploader from "jms-uploader"
html 元素:
<input id="file1" multiple type="file" /> <input id="file2" multiple type="file" /> <button onclick="upload()"> upload </button> <div id="info"></div>
javascript 脚本:
async function upload() { //自定义请求头 var headers = function () { return { "custom-header": "test" }; }; //提交的body var databody = { name: "abc" }; var uploader = new jmsuploader("http://localhost:5200/main/test", [document.queryselector("#file1").files, document.queryselector("#file2").files], headers, databody); uploader.setpartsize(1024);//设置分块大小,默认是102400 uploader.onuploading = function (percent, uploadedsize, totalsize) { document.queryselector("#info").innerhtml = percent + "% " + uploadedsize + "," + totalsize; }; var ret = await uploader.upload(); //上传完毕 alert(ret); }
组件源码地址
https://github.com/simpleway2016/jms.fileuploader.git
到此这篇关于asp.net core 多文件分块同时上传的组件的文章就介绍到这了,更多相关asp.net core 多文件上传内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论