서버 파일 다운로드

3355 단어 downfile
자세히 보기
프로젝트 요구사항: 목록 페이지에서 파일 다운로드 링크 제공
프로젝트 구현:
1. excel 파일을 준비하고 영문으로 된 excel 파일을 src/main/resources 디렉터리에 넣기
2.Java 구현


	public void downModel(){
		
		logger.info("loanUserOpenAccountBatchModel start");
		JSONObject jsonObject = new JSONObject();
		
		jsonObject.put("function", "downModel");
		writeJSONObject(jsonObject);
		
	}

	public HttpServletResponse downLoanUserOpenAccountModel(){
		 
		 HttpServletResponse response = ServletActionContext.getResponse();
		 String path = "";
		 try {
			 // /excelModel/loan_user_open_account_batch.xlsx  
			 File textf = new File("/data/j2ee/jr/excelModel", "loan_user_open_account_batch.xlsx");
//			 path = ServletActionContext.getServletContext().getResource("/data/j2ee/jr/excelModel").getPath();
			 path = textf.getPath();
			 logger.info("downLoanUserOpenAccountModel path:"+path);
		 } catch (Exception e) {
			logger.error("downLoanUserOpenAccountModel error"+e.getMessage(),e);
		 }
		 logger.info("Excel   ,path:"+path);
		 try {
          // path 。
          File file = new File(path);
          //  。
          String filename = file.getName();
          //  。
          String ext = filename.substring(filename.lastIndexOf(".") + 1);
          //  。
         InputStream fis = new BufferedInputStream(new FileInputStream(path));
          byte[] buffer = new byte[fis.available()];
          fis.read(buffer);
          fis.close();
          //  response
          response.reset();
          
          //  response Header
          // ContentType , ,   
          response.setContentType("multipart/form-data");
          response.addHeader("Content-Disposition", "attachment;filename=" + new String(" ".getBytes("gb2312"), "ISO8859-1" )+"."+ext.toLowerCase());
          response.addHeader("Content-Length", "" + file.length());
          OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
          response.setContentType("application/octet-stream");
          toClient.write(buffer);
          toClient.flush();
          toClient.close();
          logger.info("EXCEL    ");
          
      } catch (IOException ex) {
          ex.printStackTrace();
          logger.error("EXCEL    ");
          return null ;
}
      return response;
		
	}

3. 주의
파일 저장 경로
로컬 테스트 및 테스트 환경에서 측정

		 try {
			 path = ServletActionContext.getServletContext().getResource("/excelModel/loan_user_open_account_batch.xlsx").getPath();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}

파일이 src/main/resources에 놓여 있기 때문에 이 방법으로 파일을 얻을 수 있습니다
그러나 정식 환경에 발표되었을 때, 운위는 파일을 이 디렉터리에 놓을 수 없다고 말했고, src는 프로젝트의 프로필만 방지할 수 있다
그래서 다른 디렉터리에만 놓을 수 있고, 해당하는 다운로드 주소는 linux 서비스의 경로 주소로 바뀝니다.
파일을 가져오는 방법도 getResource를 사용할 수 없습니다.

좋은 웹페이지 즐겨찾기