js代码:
var config = {
//api: "http://192.168.2.195/",api: "http://192.168.2.217/",
maxupload: 2 * 1024 * 1024
};
function openCamera() {
var cmr = plus.camera.getCamera();
cmr.captureImage(function(p) {
plus.io.resolveLocalFileSystemURL(p, function(entry) {
// plus.nativeUI.showWaiting("人脸识别中", ""); //显示系统loading框
plus.zip.compressImage({
src: entry.toLocalURL(),
dst: '_doc/camera/' + p,
overwrite: true,
format: "jpg",
width: "30%"
}, function(zip) {
if (zip.size > (1 * 1024 * 1024)) {
return mui.toast('文件超大,请调整相机重新拍照');
}
file_url = zip.target;
alert(file_url);
// plus.nativeUI.showWaiting("正在上传中……");
var task = plus.uploader.createUpload(
config.api + "/attach/upload", {
method: "POST",
blocksize: 20 * 1024,
priority: 100
},
function(r, status) {
alert(JSON.stringify(r))
plus.nativeUI.closeWaiting();
onresult(JSON.parse(r.responseText))
});
var _data = {
userId: localStorage.getItem("userId"),
corpId: localStorage.getItem("corpId"),
};
for (var i in _data) {
task.addData(i, _data[i])
}
task.setRequestHeader("X-Request-Platform", "app")
if (null != localStorage.getItem("token")) {
task.setRequestHeader("X-Request-Token", localStorage.getItem("token"))
}
if (typeof file_url.files == "object") {
var files = file_url.files;
for (var i in files) {
task.addFile(files[i], {
key: files[i]
})
}
} else {
task.addFile(file_url, {
key: file_url
})
}
task.start();
}, function(zipe) {
plus.nativeUI.closeWaiting();
mui.toast('压缩失败!')
});
}, function(e) {
plus.nativeUI.closeWaiting(); //获取图片失败,loading框取消
mui.toast('失败:' + e.message); //打印失败原因,或给出错误提示
});
}, function(e) {
plus.nativeUI.closeWaiting(); //开启照相机失败,关闭loading框
mui.toast('失败:' + e.message); //打印错误原因,给出错提示
}, {
filename: '_doc/camera/', //图片名字
index: 1 //摄像头id
});
}
后端java:
//control 层
@RequestMapping("/upload")
public Object upload(HttpServletRequest request,HttpServletResponse resp,HttpSession session) throws IOException, Exception {
List<Object> list= new ArrayList<Object>();
if(StringUtils.isNotBlank(request.getParameter("base64data"))){
Object r = attachService.upload(request.getParameter("base64data"));
list.add(r);
}else{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> o = multipartRequest.getFileMap();
if(o.size()>0){
MultipartFile multipartFile=null;;
for (String k : o.keySet()) {
multipartFile = o.get(k);
Object r = attachService.upload(multipartFile);
list.add(r);
}
}
}
if(BrowserUtil.IE6.equals(BrowserUtil.getBrowserName(request))
||
BrowserUtil.IE7.equals(BrowserUtil.getBrowserName(request))
||
BrowserUtil.IE8.equals(BrowserUtil.getBrowserName(request))
){
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().write(JSON.toJSONString(list));
return null;
}else{
resp.setContentType("application/json;charset=UTF-8");
return new ResultOk(list);
}
}
//service层
public Object upload(MultipartFile multipartFile) throws IOException, Exception {
if("alioss".equals(attachConfig.getStrategy())){return uploadtoalioss(multipartFile);
}else{
return uploadtolocal(multipartFile);
}
}
public Object uploadtolocal(MultipartFile multipartFile) throws IOException, Exception {
String originalFilename =multipartFile.getOriginalFilename().toLowerCase();
String filename = MD5Util.encode(""+System.currentTimeMillis());
String suffix = ".jpg";
String str = attachConfig.getDirstring();
String dir1 = ""+str.charAt((int) (Math.random()*15));
String dir2 = ""+str.charAt((int) (Math.random()*15));
if(originalFilename.endsWith(".jpg") || originalFilename.endsWith(".jpeg")){
suffix = ".jpg";
}else if(originalFilename.endsWith(".png")){
suffix = ".png";
}else if(originalFilename.endsWith(".bmp")){
suffix = ".bmp";
}else if(originalFilename.endsWith(".gif")){
suffix = ".gif";
}else if(originalFilename.endsWith(".mp3")){
suffix = ".mp3";
dir1 = "x";
}else if(originalFilename.endsWith(".mp4")){
suffix = ".mp4";
dir1 = "y";
}else if(originalFilename.endsWith(".rar")){
suffix = ".rar";
dir1 = "z";
}else if(originalFilename.endsWith(".zip")){
suffix = ".zip";
dir1 = "z";
}else if(originalFilename.endsWith(".xls")){
suffix = ".xls";
dir1 = "z";
}else if(originalFilename.endsWith(".doc")){
suffix = ".doc";
dir1 = "z";
}else if(originalFilename.endsWith(".docx")){
suffix = ".docx";
dir1 = "z";
}else if(originalFilename.endsWith(".xlsx")){
suffix = ".xlsx";
dir1 = "z";
}else{
throw new Exception("不支持的文件类型");
}
String level = attachConfig.getLevel().toString();
String key="";
String fileid = "";
if("2".equals(level)){
fileid = "2" + dir1 + dir2 + filename + suffix;
key = dir1 + "/" +dir2 + "/2" + dir1 + dir2 + filename + suffix;
}else{
fileid = "1" + dir1 + filename + suffix;
key = dir1 + "/1" + dir1 + filename + suffix;
}
FileUtil.makeDirectory(attachConfig.getLocalroot() +attachConfig.getLocalctxpath()+ "/" + key);
File saveFile = new File(attachConfig.getLocalroot() +attachConfig.getLocalctxpath()+ "/" + key);
multipartFile.transferTo(saveFile);
Map<String,Object> map = new HashMap<String,Object>();
map.put("fileid",fileid);
map.put("fileurl","http://"+attachConfig.getLocaldomain()+attachConfig.getLocalctxpath()+"/"+key);
map.put("errcode",0);
map.put("url","http://"+attachConfig.getLocaldomain()+attachConfig.getLocalctxpath()+"/"+key);
map.put("error",0);
map.put("errmsg","你的文件已经上传成功了");
return map;
}