javaweb 업로드 인 스 턴 스 전체 버 전 분석(상)

웹 응용 시스템 개발 에서 파일 업로드 와 다운로드 기능 은 매우 자주 사용 되 는 기능 입 니 다.오늘 은 자바 웹 의 파일 업로드 와 다운로드 기능 의 실현 에 중심 을 두 고 파일 업로드 에 중점 을 두 었 습 니 다.
파일 업로드 에 대해 브 라 우 저 는 업로드 과정 에서 파일 을 스 트림 으로 서버 에 제출 합 니 다.만약 에 Servlet 을 사용 하여 업로드 파일 의 입력 흐름 을 직접 가 져 온 다음 에 요청 파 라미 터 를 분석 하 는 것 이 번 거 롭 기 때문에 apache 의 오픈 소스 도구 인 common-fileupload 라 는 파일 업로드 구성 요 소 를 선택 합 니 다.이 common-fileupload 가 구성 요 소 를 업로드 하 는 jar 패 키 지 는 apache 홈 페이지 에서 다운로드 할 수 있 고 struts 의 lib 폴 더 아래 에서 찾 을 수 있 습 니 다.struts 가 업로드 하 는 기능 은 바로 이 를 바탕 으로 이 루어 집 니 다.common-fileupload 는 common-io 라 는 가방 에 의존 하기 때문에 이 가방 을 다운로드 해 야 합 니 다.  
개발 환경 구축
FileUploadAndDownload 프로젝트 를 만 들 고 아파 치 의 comons-fileupload 파일 업로드 구성 요소 와 관련 된 Jar 패 키 지 를 만 듭 니 다.아래 그림 과 같 습 니 다.

2.파일 업로드 실현
2.1 파일 업로드 페이지
upload.html 코드 는 다음 과 같 습 니 다.

<div>
 <h5>    </h5><hr/> 
 <form id="file_upload_id" name="file_upload_name" > 
 <div><input type="file" name="file_upload"/></div>
 <div onclick = "upload()"><input type="button" value="  " /></div><br>
 <div>
 <span id="typeValue"></span>
 <input id="type" type="hidden" name="input_type">
 </div>
 <div>
 <span id="sizeValue"></span>
 <input id="size" type="hidden" name="input_size">
 </div>
 </form> 
</div> 

<script>
$(function(){
 a();
}); 

 function a(){
 var size=1024 * 1024 * 50;
 var type=
 "gif,jpg,jpeg,png,bmp,swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2,jsp";
 $("#type").val(type);//  input     
 $("#typeValue").html("       :"+type);//  
 $("#size").val(size);
 $("#sizeValue").html("       :"+size);
 } 

 function upload(){
 var formdata = new FormData($('#file_upload_id')[0]); 
 $.ajax({
 url: 'cloud/load/upload', 
 type: 'POST', 
 data: formdata, 
 dataType:'JSON',
 cache: false, 
 processData: false, 
 contentType: false ,
 success : function(date){
 alert("success"); 
 }, 
 error : function(e){
 alert("error");
 }
 });
 }
</script>

2.2 controller

package com.cloud.web.controller;

import java.io.IOException;
import java.util.HashMap;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.cloud.web.service.FileLoadService;

@Controller
@RequestMapping("/load")
public class LoadController {

 @Resource
 public FileLoadService fileLoadService;

 @RequestMapping(value = "/upload", method = RequestMethod.POST)
 @ResponseBody
 public HashMap<String,Object> upload(@RequestParam("file_upload") MultipartFile file,@RequestParam("input_type") String extName,@RequestParam("input_size") String size, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws ServletException, IOException {
 HashMap<String,Object> map = new HashMap<String,Object>();
 request.setCharacterEncoding("UTF-8");//               
 response.setContentType("text/html;charset=UTF-8"); 
 long fileSizeMax=Long.parseLong(size);
 String mes =fileLoadService.doUpload(file,request, extName, fileSizeMax);
 map.put("mes", mes);
 return map; 
 }

}

2.3 service
FileLoadServiceImpl.java 프로그램 은 다음 과 같 습 니 다.

package com.cloud.web.service.impl;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.cloud.web.service.FileLoadService;

@Service
public class FileLoadServiceImpl implements FileLoadService{

 @Override 
 public String doUpload(MultipartFile file, HttpServletRequest request, String extName, long fileSizeMax) throws ServletException, IOException{

 //      
 String realPath = request.getSession().getServletContext().getRealPath("/WEB-INF/")+"/upload/test/"; 
 String msg="";//    
 try { 
  String fileName = file.getOriginalFilename();//            
  String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();//             

  if (fileName != null) { 
  System.out.println("          :" + fileExt);  
  if(!extName.contains(fileExt)){ 
   System.out.println("               :" + fileExt);
   msg = msg + "  :" + fileName + ",              ";

   }else if(file.getSize() > fileSizeMax){  
   //              ,       
   System.out.println("      :" + file.getSize());
   msg = msg + "  :" + fileName + ",            ";   
   }else{
   Date now = new Date(); 
   DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); 
   String str = df.format(now);     
   String nFileName=str+"_"+fileName;

   //         
   String childDirectory = genChildDirectory(realPath); 
   File storeDirectory = new File(realPath + File.separator + childDirectory); 
   //       ,      
   if (!storeDirectory.exists()) { 
   storeDirectory.mkdirs(); 
   } 
   //   item          
   InputStream is = file.getInputStream();
   //         
   FileOutputStream out = new FileOutputStream(storeDirectory + "\\" + nFileName);
   //       
   byte buffer[] = new byte[1024];
   //                  
   int len = 0;
   while((len = is.read(buffer)) > 0){
   out.write(buffer, 0, len);
   }

   out.close();//     
   is.close(); //        
   msg="file:" + fileName + ",success";
   }
  } 

 } catch (Exception e) { 
  e.printStackTrace(); 
 }  
 return msg;
 }

 //                          
 @Override
 public String genChildDirectory(String realPath) { 
 Date now = new Date(); 
 DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
 String str = df.format(now); 

 File file = new File(realPath, str); 
 if (!file.exists()) { 
  file.mkdirs(); 
 } 
 return str; 
 }
}

인터페이스 디 스 플레이:

파일 업로드 위치:

이상 파일 업로드 기능 완료!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기