前臺多圖片上傳,Java後臺處理後上傳到ftp上並回顯

編程語言 技術 凱哥java 2017-08-02

本文是《頁面ajax上傳圖片後,後臺上傳圖片服務器後回顯》發出後,很多網友說,不能多圖片上傳的。

所以,本篇介紹多圖片上傳。

解決思路:

先獲取MultipartFile multipartFile 對象。在進行循環遍歷得到單個對象。

首先,我們來回顧下,單圖片上傳的後臺代碼:

請求參數中:

前臺多圖片上傳,Java後臺處理後上傳到ftp上並回顯

需要@RequestParam("file") MultipartFile multipartFile且是必填的。

通過multipartFile.transferTo(file)將圖片複製。如下圖

前臺多圖片上傳,Java後臺處理後上傳到ftp上並回顯

這是單圖的主要思路。

多圖上傳開始:

1:創建一個通用的多部分解析器

前臺多圖片上傳,Java後臺處理後上傳到ftp上並回顯

2:循環得到單個後放到list中:

前臺多圖片上傳,Java後臺處理後上傳到ftp上並回顯

得到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;

}

相關推薦

推薦中...