控制层处理:
// 转型为MultipartHttpRequest(重点的所在)
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;// 获得第1张图片(根据前台的name名称得到上传的文件)
MultipartFile userImg_file = multipartRequest.getFile("headImgs");
Map<String, Object> uploadMap = ImageUpload.uploadFile(request,userImg_file);
if ((int) uploadMap.get("status") == 1) {
// System.out.println(uploadMap.get("data"));
//得到文件的保存路径
String field_value = (String) uploadMap.get("data");// dataMap.put(field_name, field_value);
// userInfoBean.setHeadImg(field_value);
工具类:
package com.cxy.template.util;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;
/**
* 图片上传:http://www.cnblogs.com/WarBlog/p/4838255.html
* @author Linlm
*
*/
public class ImageUpload {
static Logger logger = Logger.getLogger(ImageUpload.class);
public static boolean makeDirs(String filePath) {
String folderName = filePath;
if (folderName == null || folderName.isEmpty()) {
return false;
}
File folder = new File(folderName);
return (folder.exists() && folder.isDirectory()) ? true : folder.mkdirs();
}
public static Map<String, Object> uploadFile(HttpServletRequest request,MultipartFile file){
/*
* 返回的map中status的含义:1-上传成功;0-创建图片文件夹失败;-1-图片过大;-2-文件不是图片格式;-3-图片编码错误;-4-没有传入图片
*/
Map<String, Object> map = new HashMap<String, Object>();
//上传路径,本来是相对路径,等到发布到Linux环境中,通过配置文件修改路径为Linux中的资源地址【防止工程删除而资源文件不会丢失】,重新发布工程时把我们资源文件导入工程项目。
// String filePath = request.getSession().getServletContext().getRealPath("/images/")+DateFormat.getCurTime();
// System.out.println(filePath);
String filePath = "E:\\images\\"+DateFormat.getCurTimeDay();
System.out.println(filePath);
makeDirs(filePath);
//System.out.println(makeDirs(filePath));
int size = 15; //上传图片不能大于3M
long maxFileSize = (Integer.valueOf(size)) * 1024 * 1024;
if(file != null && file.getOriginalFilename().length()>0){
String suffix = file.getOriginalFilename().substring(
file.getOriginalFilename().lastIndexOf("."));
long fileSize = file.getSize();
if (suffix.equals(".png") || suffix.equals(".jpg") || suffix.equals(".gif")|| suffix.equals(".JPG")) {
if (fileSize < maxFileSize) {
// System.out.println("fileSize:"+fileSize);
String fileName = DateFormat.getCurTimeLong()+Math.random()*1000+suffix;
System.out.println(fileName);
try {
fileName = new String(fileName.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e1) {
map.put("status", -3);
map.put("data", "图片编码错误!");
}
File tempFile = new File(filePath, fileName);
try {
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdirs();//如果是多级文件使用mkdirs();如果就一层级的话,可以使用mkdir()
}
if (!tempFile.exists()) {
tempFile.createNewFile();
}
file.transferTo(tempFile);
} catch (Exception e) {
map.put("status", 0);
map.put("data", "创建图片文件夹失败!");
logger.error("图片上传失败!"+e.getMessage());
}
map.put("status", 1);
map.put("data", "images/"+DateFormat.getCurTimeDay()+"/"+ tempFile.getName());
} else {
map.put("status", -1);
map.put("data", "Image too big");
}
} else {
map.put("status", -2);
map.put("data", "Image format error");
}
}else{
map.put("status", -4);
map.put("data", "no image");
}
return map;
}
}
http://blog.youkuaiyun.com/niuch1029291561/article/details/17377903
3055

被折叠的 条评论
为什么被折叠?



