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;
}
}
인터페이스 디 스 플레이:파일 업로드 위치:
이상 파일 업로드 기능 완료!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Javaweb에서 양식 데이터를 가져오는 다양한 방법Javaweb에서 양식 데이터를 가져오는 몇 가지 방법 1. 키 값이 맞는 형식으로 폼 데이터를 얻는다 getParameter(String name): 키를 통해 value를 반환합니다. getParameterVal...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.