public ModelAndView GetImage(HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String, Object> maps = new HashMap<String, Object>();
try {
// 創建一個臨時文件存放要上傳的文件,第一個參數為上傳文件大小,第二個參數為存放的臨時目錄
DiskFileItemFactory factory = new DiskFileItemFactory(
1024 * 1024 * 5, new File("D:\\temp1"));
// 設置緩沖區大小為 5M
factory.setSizeThreshold(1024 * 1024 * 5);
// 創建一個文件上傳的句柄
ServletFileUpload upload = new ServletFileUpload(factory);
// 設置上傳文件的整個大小和上傳的單個文件大小
upload.setSizeMax(1024 * 1024 * 50);
upload.setFileSizeMax(1024 * 1024 * 5);
try {
// 把頁面表單中的每一個表單元素解析成一個FileItem
List<FileItem> items = upload.parseRequest(request);
for (FileItem fileItem : items) {
// 如果是一個普通的表單元素(type不是file的表單元素)
if (fileItem.isFormField()) {
System.out.println(fileItem.getFieldName()); // 得到對應表單元素的名字
System.out.println(fileItem.getString()); // 得到表單元素的值
} else {
// 獲取文件的后綴名
String fileName = fileItem.getName();// 得到文件的名字
String fileExt = fileName.substring(
fileName.lastIndexOf(".") + 1,
fileName.length());
String a = System.currentTimeMillis() + "";
String path = request.getRealPath("/") + "kmtp/"
+ "IOS" + a + ".jpg";
String url = "http://" + request.getServerName() + ":"
+ request.getServerPort() + "/"
+ request.getContextPath() + "kmtp/" + "IOS"
+ a + ".jpg";
String extension = path.substring(
path.lastIndexOf(".") + 1, path.length());
Pattern pattern = Pattern.compile("bmp|gif|gepg|png|");
Matcher matcher = pattern.matcher(extension);
if (matcher.find()) {
try {
fileItem.write(new File(path));
maps.put("message", url);
} catch (Exception e) {
e.printStackTrace();
maps.put("message", "0");
}
} else {
System.out.println("該文件類型不能夠上傳");
maps.put("message", "0");
}
}
}
} catch (FileUploadBase.SizeLimitExceededException e) {
System.out.println("整個請求的大小超過了規定的大小...");
maps.put("message", "0");
} catch (FileUploadBase.FileSizeLimitExceededException e) {
System.out.println("請求中一個上傳文件的大小超過了規定的大小...");
maps.put("message", "0");
} catch (FileUploadException e) {
e.printStackTrace();
maps.put("message", "0");
}
} catch (Exception e) {
logger.error(e.getStackTrace());
e.printStackTrace();
maps.put("message", "0");
}
// 返回結果 0系統錯誤,
response.getWriter().write(
URLEncoder.encode(JSONObject.fromObject(maps).toString(),
"UTF-8"));
return null;
}