struts 2 파일 다운로드 기능 (다운로드 하면 서 포장)

3836 단어 struts2
회전:
http://cloudyxuq.iteye.com/blog/1532631
여러 개의 파일, 디 렉 터 리 가 다 르 기 때문에 조건 조 회 를 통 해 어떻게 포장 다운 로드 를 합 니까?
1. ZipEntry 를 이용 하여 i 줄 파일 의 압축
2. 프론트 데스크 톱 jsp 에서 다운로드 해 야 할 일련의 파일 의 경로 (배열 형식) 를 전송 합 니 다.checkBox 에 있 기 때문에 폼 제출 은 자동 으로 배열 로 정 의 됩 니 다.name 이름 을 배경 에서 얻 을 경로 배열 이름 으로 만 명명 해 야 합 니 다.
프런트
downLoadZip.jsp
체크 박스 코드
iterator 를 이용 하여 교 체 된 filePath
value=''/>
백 스테이지 액 션
private String[] downLoadPaths;
downLoadPaths 를 옮 겨 다 니 며 포장...
코드:

/**
 *     (   zip,    )。       
 * 
 * @author Cloudy
 * 
 */
@Namespace("xxxxxx")
public class DownZipAction {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	//     List<String>()        
	private String[] downLoadPaths;
	private OutputStream res;
	private ZipOutputStream zos;
	private String outPath;

	// Action   
	@Action(value="DownLoadZip",results={@Result(name="nodata",location="/error.jsp"),
			@Result(name="success",location="xxxx.jsp")})
	public String downLoadZip() throws Exception {
		//        
		if (downLoadPaths.length != 0) {
			//      
			preProcess();
		} else {
			//         ,  nodata
			return "nodata";
		}
		//   
		writeZip(downLoadPaths);
		//       
		afterProcess();
		return SUCCESS;
	}

	//     
	public void writeZip(String[] downLoadPaths) throws IOException {
		byte[] buf = new byte[8192];
		int len;
		
		for (String filename : downLoadPaths) {
			File file = new File(filename);
			if (!file.isFile())
				continue;
			ZipEntry ze = new ZipEntry(file.getName()); //apache jar ZipEntry
			zos.putNextEntry(ze);
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
			while ((len = bis.read(buf)) > 0) {
				zos.write(buf, 0, len);
			}
			bis.close();
			zos.closeEntry();
		}
	}

	//    
	public void preProcess() throws Exception {
		HttpServletResponse response = ServletActionContext.getResponse();
		res = response.getOutputStream();
		//      (            )
		response.reset();
		//        
		response.setHeader("Content-Disposition", "attachment;filename=document.zip");
		response.setContentType("application/zip");
		zos = new ZipOutputStream(res);
	}

	//    
	public void afterProcess() throws IOException {

		zos.close();
		res.close();
	}

	public OutputStream getRes() {
		return res;
	}

	public void setRes(OutputStream res) {
		this.res = res;
	}

	public ZipOutputStream getZos() {
		return zos;
	}

	public void setZos(ZipOutputStream zos) {
		this.zos = zos;
	}

	public String[] getDownLoadPaths() {
		return downLoadPaths;
	}

	public void setDownLoadPaths(String[] downLoadPaths) {
		this.downLoadPaths = downLoadPaths;
	}

	public String getOutPath() {
		return outPath;
	}

	public void setOutPath(String outPath) {
		this.outPath = outPath;
	}

}

struts 2 파일 다운로드 오류 알림 해결 방법.
http://blog.csdn.net/java20100406/article/details/6439698

좋은 웹페이지 즐겨찾기