MUI使用plus.uploader.createUpload同时上传多个文件
用从相册选择多个图片上传举例
MUI代码
mui.plusReady(function() {
var files = [];//用来保存需要上传的文件信息
/**
*打开相册选择图片
*/
plus.gallery.pick(function(e) {
mui.each(e.files, function(num, item) {
files.push(item);//把图片路径保存到数组中
});
}, function(a) {}, {
filter: "image",
multiple: true,
maximum: 9,//最多选择图片数量
system: false,
onmaxed: function() {
mui.toast('最多只能选择9张图片');
}
});
var wt = plus.nativeUI.showWaiting();//等待动画
//创建一个上传任务,url填自己写的后端接口地址
var task = plus.uploader.createUpload(url, {
method: "POST",
priority: 100,
},
function(t, status) {
wt.close();//上传结束关闭动画
}
);
//遍历文件数组,将所有文件添加到上传队列
mui.each(files, function(num, item) {
task.addFile(item.path, {
key: "file" + num,//这里的key一定不能重复
});
});
//其他的参数,有需要可以添加
//task.addData("test", "test");
//启动上传任务
task.start();
});
后端用Spring框架实现——Java代码
@RequestMapping(value = "/uploadFiles", method = RequestMethod.POST)
@ResponseBody
public boolean uploadFile(HttpServletRequest request) throws IOException {
boolean flag = false;
MultipartHttpServletRequest mReq = (MultipartHttpServletRequest) request;
//获取文件的id---对应MUI上传时addFile时里面的Key
Iterator<String> files = mReq.getFileNames();
MultipartFile file = null;
OutputStream outStream = null;
//文件存储路径
String path = "C:\\images";
//遍历迭代器,将文件写入到服务器的磁盘
while(files.hasNext()) {
try {
//获取文件id对应的文件
file = mReq.getFile(files.next());
byte[] bytes = file.getBytes();
//获取文件名,这里获取到的是文件上传上来时 的名字
String oldName = file.getOriginalFilename();
File f = new File(path);
if(!f.exists()) {
f.mkdirs();
}
//开始写入磁盘
File targetFile = new File(path + "\\" + oldName);
outStream = new FileOutputStream(targetFile);
outStream.write(bytes);
}catch(Exception e) {
flag = false;
e.printStackTrace();
}
}
flag = true;
outStream.close();
return flag;
}
版权声明:本文为qq_36155003原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。