Struts使用plupload实现多文件上传
plupload,一个挺不错js框架。到时其官方demo中只是提供了php服务端代码。
下面是我个人修改的,通过Struts实现多文件上传。
package net.bingosoft.attach.action;import java.io.IOException;import java.io.InputStream;import java.util.UUID;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.bingosoft.attach.common.FileHelper;import net.bingosoft.attach.service.AttachService;import net.bingosoft.common.config.Config;import net.bingosoft.common.struts.BaseAction;import net.bingosoft.competition.model.VieFile;import org.apache.commons.fileupload.FileItemIterator;import org.apache.commons.fileupload.FileItemStream;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class PluploadAction extends BaseAction{static private final String RESP_SUCCESS = "{\"jsonrpc\" : \"2.0\", \"result\" : null, \"id\" : \"id\"}";static private final String RESP_ERROR = "{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}";static private final String JSON = "application/json";private AttachService attachService;public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws IOException{request.setCharacterEncoding("UTF-8");String responseString = RESP_SUCCESS;String belongId = request.getParameter("belongId");String belongModel = request.getParameter("belongModel");boolean isMultipart = ServletFileUpload.isMultipartContent(request);if (isMultipart) {ServletFileUpload upload = new ServletFileUpload();//webroot绝对路径String webRootPath = FileHelper.getServerWebRoot();String context = request.getContextPath();try {FileItemIterator iter = upload.getItemIterator(request);while (iter.hasNext()) { FileItemStream item = iter.next(); // Handle a multi-part MIME encoded file. if (!item.isFormField()) { String filename = item.getName(); InputStream input = item.openStream(); String filePath = FileHelper.getServerREFile(filename); FileHelper.uploadFile(input, webRootPath+filePath); if(belongModel.equals(Config.getString("JINGZHENG_UPLOAD_FLAG"))){ VieFile vieFile = new VieFile(); vieFile.setFid(UUID.randomUUID().toString()); vieFile.setIid(belongId); vieFile.setFilePath(context+"/"+filePath); vieFile.setFileName(filename); attachService.getBaseDao().save(vieFile); } }}}catch (Exception e) {responseString = RESP_ERROR;e.printStackTrace();}}// Not a multi-part MIME request.else {responseString = RESP_ERROR;}response.setContentType(JSON);byte[] responseBytes = responseString.getBytes();response.setContentLength(responseBytes.length);ServletOutputStream output = response.getOutputStream();output.write(responseBytes);output.flush();}public AttachService getAttachService() {return attachService;}public void setAttachService(AttachService attachService) {this.attachService = attachService;}}