//上传图片 证件照
@RequestMapping(value = "/uploadPoster.do")
public @ResponseBody Object uploadPoster(HttpServletRequest request,
HttpServletResponse response) throws Exception {
HttpJson httpJson = new HttpJson();
System.out.println("开始上传照片");
String customerId = request.getParameter("computecustomerId");
String ret_fileName = null;// 返回给前端已修改的图片名称
String base64Img = request.getParameter("base64");
// 临时文件路径
//String dirTemp = "\\upload\\temp";
String dirTemp = "\\upload";
String uploadImg = "\\upload";
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
httpJson.setMsg("上传图片失败");
httpJson.setSuccess(false);
return httpJson;
}
// response.setContentType("text/html; charset=UTF-8");
// PrintWriter out = response.getWriter();
String realPath = request.getServletContext().getRealPath("");
String tempPath = request.getServletContext().getRealPath("/")
+ dirTemp;
File file_normer = new File(realPath + uploadImg+"/"+customerId);
if (!file_normer.exists()) {
file_normer.mkdirs();
}
// 用于设置图片过大,存入临时文件
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(20 * 1024 * 1024); // 设定使用内存超过5M时,将产生临时文件并存储于临时目录中。
factory.setRepository(new File(tempPath)); // 设定存储临时文件的目录。
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
if (base64Img == null) // 图像数据为空
return false;
base64Img = base64Img.replaceAll("data:image/jpeg;base64,", "");
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] b = decoder.decodeBuffer(base64Img);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpeg图片
ret_fileName = new String((DateHandler.dateToStr(new Date(),"yyyyMMddhhmmss")+".jpg").getBytes("gb2312"), "ISO8859-1" ) ;
File file = new File(realPath + uploadImg+"/"+ customerId + "/" + ret_fileName);
OutputStream out = new FileOutputStream(file);
out.write(b);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
String image_url = request.getSession().getServletContext() .getContextPath()+ "/upload/" + customerId + "/" + ret_fileName;
// 将已修改的图片url对应的id返回前端
httpJson.setMsg("上传图片成功");
httpJson.setSuccess(true);
httpJson.setObj(image_url);
return JSONObject.fromObject(httpJson);
}
}
前端提交的参数代码:
homeapp.directive('submitDwg',function () {
return {
restrict:'AE',
link:function (scope,elem,attrs) {
elem.bind('change',function () {
console.log('事件绑定');
console.log(this.files[0].type);
var file=this.files[0];
//判断提交文件类型
if(!/image\/\w+/.test(file.type)){
alert('请确保文件为图像类型');
return false;
}
var reader=new FileReader();
console.log(reader);
reader.readAsDataURL(file);
reader.οnlοad=function (e) {
console.log(this.result);
console.log(elem.attr('ng-modelDWG'));
var ngModel=elem.attr('ng-modelDWG');
var srcArr=ngModel.split('.');
//向后台提交,获取url
scope[srcArr[0]][srcArr[1]];
console.log(scope[srcArr[0]]);
var imgUrl = $.util.requestAjaxData("/ntows-admin/NtowsCustomer/uploadPoster.do",{computecustomerId:scope['ID'],'base64':this.result});
scope[srcArr[0]][srcArr[1]]=imgUrl.obj;
console.log(ngModel);
console.log(elem.parents('body').find('div.avatar>img')[0].src=this.result);
}
})
}
}
});