jQuery使用Base64 生成图片预览和java后台不同的接收处理方式
原文地址:https://blog.csdn.net/davidchong210/article/details/49756575
本文主要解决移动或者pc端上传图片及生成预览的问题
1.jQuery 生成base64编码,前台预览
2.jsp 自定义上传按钮两种方式的上传 input file 和 input hidden
3.java后台两种方式的上传操作 SpringMvc自身的上传机制和Base64解码上传的操作
jQuery代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Jsp代码
@RequestMapping("uploadImg")
public ModelAndView uploadImg(String[] baseFile, HttpServletRequest request) throws IllegalStateException, IOException{
ModelAndView mav = new ModelAndView();
mav.setViewName("MyJsp");
mav.addObject("mes", "Success!!!");
/**
* springMvc 上传图片
* 1.enctype属性的属性值设为multipart/form-data。
* 2.input的type属性的属性值设为file。
* 后台就可以使用multipartResolver获取到前台上传的文件
*/
/*
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if(multipartResolver.isMultipart(request)){
MultipartHttpServletRequest multipertRequest = (MultipartHttpServletRequest)request;
Iterator<String> iter = multipertRequest.getFileNames();
//上传一张图片时可以直接使用这个
//MultipartFile file11 = multipertRequest.getFile("files");
//上传多张图片
while (iter.hasNext()) {
MultipartFile file = multipertRequest.getFile((String)iter.next());
if(!file.isEmpty()){
String path = request.getSession().getServletContext().getRealPath("uploadImg");
String imageName = this.getImageName();
//File.separator路径分隔符
File savefile = new File(path+File.separator+imageName);
//file.transferTo将上传的文件写入指定位置
file.transferTo(savefile);
}
}
}*/
/**
* Base64 上传图片
*/
String path = request.getSession().getServletContext().getRealPath("uploadImg");
Base64 base64 = new Base64();
String[] imageNames = new String[baseFile.length];
//file 为前台隐藏域里面的字符串
if(baseFile!= null && baseFile.length!=0){
int index = 0;
for (String base64Str : baseFile) {
//base64 解码
byte[] byteArray = base64.decode(base64Str);
// 调整异常数据
for (byte b : byteArray) {
if(b<0)
b+=256;
}
String imageName = this.getImageName();
try {
OutputStream out = new FileOutputStream(path+File.separator+imageName);
out.write(byteArray);
out.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println(imageNames[0]);
}
imageNames[index] = path+File.separator+imageName;
index ++ ;
}
}
System.out.println(imageNames[0]);
return mav;
}
/**
- 根据系统规则得到图片名称
*/
public String getImageName(){
return UUID.randomUUID().toString()+".jpg";
}