`
kjkhi
  • 浏览: 181312 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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;
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics