转载 https://blog.csdn.net/qq_29407683/article/details/80007643#commentBox
前端
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link href="../css/mui.min.css" rel="stylesheet" />
<script src="../js/mui.min.js"></script>
<script src="../js/app.js"></script>
<script src="../js/app-con.js"></script>
<script src="../js/jquery-1.8.3.min.js"></script>
<style>
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">拍照 </h1>
<a class="mui-icon-right-nav mui-pull-right">
<span id="headImage" class="mui-icon mui-icon-camera"></span>
</a>
<a class="mui-icon-right-nav mui-pull-right">
<span id="uploadImage" class="mui-icon mui-icon-upload"></span>
</a>
</header>
<div class="mui-content" style="background-color:#fff">
<ul id="imgs" class="mui-table-view mui-grid-view">
<!--<li class="mui-table-view-cell mui-media mui-col-xs-6">
<a href="#">
<img class="mui-media-object" src="images/shuijiao.jpg">
<span class="mui-icon mui-icon-trash deleteBtn"></span>
<div class="mui-media-body">
<input type="text" class="remark" placeholder="备注">
</div>
</a>
</li>-->
</ul>
</div>
<script>
var fileArr = [];
mui.init({
swipeBack: true //启用右滑关闭功能
});
document.getElementById('headImage').addEventListener('tap', function() {
if (mui.os.plus) {
var buttonTit = [{
title: "拍照"
}, {
title: "从手机相册选择"
}];
plus.nativeUI.actionSheet({
title: "上传图片",
cancel: "取消",
buttons: buttonTit
}, function(b) { /*actionSheet 按钮点击事件*/
switch (b.index) {
case 0:
break;
case 1:
getImage(); /*拍照*/
break;
case 2:
galleryImg(); /*打开相册*/
break;
default:
break;
}
})
}
}, false);
// 拍照获取图片
function getImage() {
var c = plus.camera.getCamera();
c.captureImage(function(e) {
plus.io.resolveLocalFileSystemURL(e, function(entry) {
var imgSrc = entry.toLocalURL() + "?version=" + new Date().getTime(); //拿到图片路径
setFile(imgSrc);
setHtml(imgSrc);
}, function(e) {
console.log("读取拍照文件错误:" + e.message);
});
}, function(s) {
console.log("error" + s.message);
}, {
filename: "_doc/camera/"
})
}
// 从相册中选择图片
function galleryImg() {
// 从相册中选择图片
plus.gallery.pick(function(e) {
for (var i in e.files) {
var fileSrc = e.files[i];
setFile(fileSrc);
setHtml(fileSrc);
}
}, function(e) {
console.log("取消选择图片");
}, {
filter: "image",
multiple: true,
//maximum: 5,
system: false,
onmaxed: function() {
plus.nativeUI.alert('最多只能选择5张图片');
}
});
}
function setHtml(path) {
var str = '';
str = '<li class="mui-table-view-cell mui-media mui-col-xs-6">' +
'<img class="mui-media-object" src="' + path + '">' +
'<span class="mui-icon mui-icon-trash deleteBtn"></span>' +
// '<div class="mui-media-body">'+
// '<input type="text" class="remark" placeholder="备注">'+
// '</div>'+
'</li>';
jQuery("#imgs").append(str);
}
function setFile(fileSrc) {
var image = new Image();
image.src = fileSrc;
fileArr.push(image);
}
document.getElementById('uploadImage').addEventListener('tap', function() {
var files = fileArr;
var wt = plus.nativeUI.showWaiting();
var server = appConfig.serverPath + "/api/upload";
var task = plus.uploader.createUpload(server, {
method: "POST" , multiple: true
},
function(t, status) { //上传完成
if (status == 200) {
alert("上传成功:" + t.responseText);
wt.close(); //关闭等待提示按钮
} else {
alert("上传失败:" + status);
wt.close(); //关闭等待提示按钮
}
}
);
//将文件集合添加到上传队列中
console.log("文件数量:"+files)
for (var i = 0; i < files.length; i++) {
var f = files[i];
task.addFile(f.src, {
key: "file"+i //相同的key在后端只能拿到一张,所以要设置不同的key
});
}
//传其他的参数 如备注
//添加其他参数
//遍历5个input框
task.addData("name", "test");
task.start();
});
</script>
</body>
</html>
后端:
@ResponseBody
@PostMapping("upload")
public void upload(HttpServletResponse response, MultipartHttpServletRequest request) throws IOException {
List<MultipartFile> multipartFiles = request.getFiles("file");
int i = 0;
for (MultipartFile file : multipartFiles) {
if (file == null || file.getBytes() == null) {
throw new BusinessException(ErrCodeConstants.Default.FILE_NOT_EXIST);
}
FileUploadUtil.writeFileByFilePath(file.getBytes(), file.getOriginalFilename(),
FileUploadUtil.FILE_TYPE_ALL, null);
i++;
}
renderText(response, FastJSONHelper.serialize(i));
}