本文是《頁面ajax上傳圖片後,後臺上傳圖片服務器後回顯》發出後,很多網友說,不能多圖片上傳的。
所以,本篇介紹多圖片上傳。
解決思路:
先獲取MultipartFile multipartFile 對象。在進行循環遍歷得到單個對象。
首先,我們來回顧下,單圖片上傳的後臺代碼:
請求參數中:
需要@RequestParam("file") MultipartFile multipartFile且是必填的。
通過multipartFile.transferTo(file)將圖片複製。如下圖
這是單圖的主要思路。
多圖上傳開始:
1:創建一個通用的多部分解析器
2:循環得到單個後放到list中:
得到list後,在按照單個圖片出來思路進行處理,就可以。
示例代碼:
@RequestMapping(value = "/ckeditorUpload")
public String ckeditorUpload(HttpServletResponse response
,HttpServletRequest request
) throws Exception {
InputStream is = null;
OutputStream os = null;
PrintWriter out = null;
String path = request.getSession().getServletContext().getRealPath("/uploadDoc");
File deleteBigImgFile = new File(path);
try {
if(null!=upload){
}
// 圖片名稱
String fileName = null;
// 創建一個通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession()
.getServletContext());
// MultipartFile mfile = null;
List<MultipartFile> mfileList = new ArrayList<MultipartFile>();
if (multipartResolver.isMultipart(request)) {
// 轉換成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
MultipartFilemfile = multiRequest.getFile(iter.next());
if (mfile != null) {
// 取得當前上傳文件的文件名稱
String myFileName = mfile.getOriginalFilename();
// 如果名稱不為“”,說明該文件存在,否則說明該文件不存在
if (myFileName.trim() != "") {
// 獲得圖片的原始名稱
String originalFilename = mfile.getOriginalFilename();
fileName=originalFilename;
}
mfileList.add(mfile);
}
}
}
response.setCharacterEncoding("UTF-8");
out = response.getWriter();
String suffix = fileName.substring(fileName.lastIndexOf("."));
if(!suffix.toLowerCase().equals(".png") && !suffix.toLowerCase().equals(".jpg") ){
out.print("<font color="red"size="2">*文件格式不正確(必須為.jpg/.gif/.bmp/.png文件)</font>");
return null;
}
File file = new File(path);
// 如果指定的路徑沒有就創建
if (!file.exists()) {
file.mkdirs();
}
try {
if(null != mfileList && !mfileList.isEmpty()){
MultipartFile mfileList = mfileList.get(0);
fileName =System.currentTimeMillis()+"_"+UUID.randomUUID().toString()+suffix;
File uploadFile = new File(file +File.separator+fileName);
deleteBigImgFile = new File(file +File.separator+fileName);
mfile.transferTo(uploadFile);
} catch (Exception e) {
System.out.println("上傳圖片時候異常了:"+e);
e.printStackTrace();
}
}
FileInputStream in1 = null;
String fileName1 = null;
try {
in1 = new FileInputStream(new File(path+"/"+fileName));
fileName1 = System.currentTimeMillis()+"_"+UUID.randomUUID().toString()+suffix;
//防止FTP上傳到服務器亂碼
String uploadFileName = fileName;
String realName1 = new String(uploadFileName.getBytes("utf-8"), "ISO-8859-1");
fileName1=realName1;
boolean isOk = FTPUpLoad.uploadFile(ftpServer, ftpPort, ftpUser, ftpPassword, fileFtpStortPath, realName1, in1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}finally{
try {
if(null != deleteBigImgFile && deleteBigImgFile.exists()){
deleteBigImgFile.delete();
}
in1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(null!=is){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}