使用Uploadify外掛基於Spring MVC非同步單次上傳多檔案
方法/步驟
搭建Spring MVC專案環境
在MyEclipse中建立Java Web專案,並匯入Spring MVC框架必要的包。並建立各種類檔案和JSP檔案:
配置web.xml檔案:
配置applicationContext.xml檔案:
xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop=";
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop ;>
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
處理業務
建立上傳檔案的Controller:
UploadFileController.java:
package com.upload.controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import com.google.gson.Gson;
import com.sun.jmx.snmp.Timestamp;
import com.upload.util.FileUtil;
@Controller("uploadFileController")
public class UploadFileController {
// Gson物件,用於操作JSON
private static Gson gson = new Gson();
/**
* 上傳檔案的方法
*
* @param anyFile
* 上傳頁面上uploadify元件的“fileObjName”屬性
* @param request
* HttpServletRequest物件
* @param response
* HttpServletResponse物件
* @return 返回JSON字串形式的結果集
* @throws IOException
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
@ResponseBody
public String upload(@RequestParam("anyFile") CommonsMultipartFile anyFile,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
Map
// 獲取伺服器上傳檔案的路徑(事先要建立好,否則會報錯,這裡為了演示就直接在Tomcat目錄下手動建立了一個名為upload的資料夾)
String filePath = request.getSession().getServletContext()
.getRealPath("/upload/");
// 避免檔案重名或者有中文導致意料之外的錯誤,將檔名統一設定為【UUID + 當前時間的時間戳】格式
String uuid = UUID.randomUUID().toString().replace("-", "");
String uuidFileName = uuid
+ new Timestamp(System.currentTimeMillis()).getDateTime();
try {
// 將檔案儲存到伺服器
FileUtil.upFile(anyFile.getInputStream(), uuidFileName, filePath);
} catch (Exception e) {
// 如果發生異常則表示上傳失敗,給出提示
map.put("result", "failed");
e.printStackTrace();
}