Struts 는 plplplpload 를 사용 하여 다 중 파일 업 로드 를 실현 합 니 다.

3944 단어 plupload
plploproad,괜 찮 은 js 프레임 워 크 입 니 다.그 때 는 공식 demo 에서 phop 서버 코드 만 제공 되 었 다.
다음은 제 가 개인 적 으로 수정 한 것 으로 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;
	}
}


좋은 웹페이지 즐겨찾기