上传图片

引入commons-fileupload-1.2.1.jar和commons-io-1.4.jar架包
<form action="" id="addForm" method="post" enctype="multipart/form-data">


@RequestMapping(value = "/_loaduserphote", method = RequestMethod.POST)
public void loadUserPhoto(HttpSession session, HttpServletRequest request, HttpServletResponse response) {
ResultObj result = new ResultObj();
result.setCmd("loadUserPhoto");
StringBuilder sb = new StringBuilder();
String fileType = request.getParameter("fileType");
String maxSize = "10";
String tempPath = request.getSession().getServletContext().getRealPath("/");
ShopUserObj user = (ShopUserObj)ShopUtil.getSession(session);
try {
printHeaders(request);
if (hasUploadFile(request) && user != null) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// 最大缓存
factory.setSizeThreshold(5 * 1024);
// 设置临时文件目录
factory.setRepository(new File(tempPath));
ServletFileUpload upload = new ServletFileUpload(factory);
if (maxSize != null && !"".equals(maxSize.trim())) {
// 文件最大上限
upload.setSizeMax(Integer.valueOf(maxSize) * 1024 * 1024);
}
// 获取所有文件列表
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {
// 文件名
String fileName = item.getName();

// 检查文件后缀格式
String fileEnd = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
if (fileType != null && !"".equals(fileType.trim())) {
boolean isRealType = false;
String[] arrType = fileType.split(",");
for (String str : arrType) {
if (fileEnd.equals(str.toLowerCase())) {
isRealType = true;
break;
}
}
if (!isRealType) {
// 提示错误信息:文件格式不正确
// sb.append("{status:'0'}");
}
}

UploadObj obj = new UploadObj();
obj.setFileNameOld(item.getName());
obj.setFileSize(item.getSize());
obj.setFileExt(getFileExt(obj.getFileNameOld()));
obj.setCreateAt(new Date());
obj.setCreateBy(user.getId());
obj.setUpdateAt(obj.getCreateAt());
obj.setUpdateBy(obj.getCreateBy());
obj.setUploadPath(DateUtil.getDateTime(obj.getCreateAt(), "yyyy/MM/dd/"));
obj.setFileName(DateUtil.getDateTime(obj.getCreateAt(), "HHmmss") + StringUtil.getRandomString(5));
obj.setFileType(getFileType(obj.getFileExt()));
getImageSize(obj, item);

StringBuffer path = new StringBuffer();
path.append(request.getSession().getServletContext().getRealPath("/f")).append("/");
path.append(obj.getUploadPath()).append(obj.getFileName()).append(".").append(obj.getFileExt());
// 写入文件
File file = new File(path.toString());
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
item.write(file);
boolean flag = shopUserService.doUpdateUserPhoto(session, request, result, obj.getFileName()+"."+obj.getFileExt(), obj);
if(flag){
sb.append("{status:'1',id:'").append(obj.getId()).append("',uploadPath:'");
sb.append(obj.getUploadPath()).append("',fileName:'").append(obj.getFileName()).append("',fileExt:'");
sb.append(obj.getFileExt()).append("',fileNameOld:'").append(obj.getFileNameOld()).append("',fileSize:'");
sb.append(obj.getFileSize()).append("',width:'").append(obj.getWidth()).append("',height:'").append(obj.getHeight());
sb.append("',remark:'").append(StringUtil.getString(obj.getRemark(), "")).append("',tag:'',seq:'0'}");
}else{
sb.append("{status:'0'}</script>");
}
}
}
}
} catch (Exception e) {
sb.append("{status:'0'}</script>");
e.printStackTrace();
}
ControllerUtil.doPrint(response, sb, null, ControllerUtil.TYPE_CALLBACK, "Shop");
}

public static void printHeaders(HttpServletRequest request) {
Enumeration<?> en = request.getHeaderNames();
while (en.hasMoreElements()) {
String name = (String) en.nextElement();
System.out.println(name + "={" + request.getHeader(name) + "}");
}
}

public static boolean hasUploadFile(HttpServletRequest request) {
String contentType = request.getHeader("content-type");
if (StringUtil.isEmpty(contentType) || contentType.indexOf("multipart/form-data") == -1 || contentType.indexOf("boundary") == -1) {
return false;
}
return true;
}

public static String getFileExt(String f) {
int i = f.lastIndexOf(".");
if (i != -1) {
return f.substring(i + 1).toLowerCase();
}
return "";
}

public static String getFileType(String fileExt) {
// 图片:1,Word文档:2,压缩文件:3,程序文件:4,文本文件:5,流媒体文件:6,其它文件:7
String type = "7";
if ("gif".equals(fileExt) || "jpg".equals(fileExt) || "jpeg".equals(fileExt) || "png".equals(fileExt) || "ico".equals(fileExt) || "bmp".equals(fileExt)) {
type = "1";
} else if ("doc".equals(fileExt) || "xls".equals(fileExt) || "docx".equals(fileExt) || "ppt".equals(fileExt)) {
type = "2";
} else if ("rar".equals(fileExt) || "zip".equals(fileExt) || "gz".equals(fileExt)) {
type = "3";
} else if ("asp".equals(fileExt) || "aspx".equals(fileExt) || "php".equals(fileExt) || "jsp".equals(fileExt) || "cs".equals(fileExt) || "java".equals(fileExt) || "py".equals(fileExt)
|| "rb".equals(fileExt)) {
type = "4";
} else if ("txt".equals(fileExt)) {
type = "5";
} else if ("flv".equals(fileExt) || "swf".equals(fileExt) || "avi".equals(fileExt) || "mp3".equals(fileExt)) {
type = "6";
}
return type;
}

public static void getImageSize(UploadObj obj, FileItem item) {
try {

} catch (Exception e) {
e.printStackTrace();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值