SpringMVC + servlet 3.0 파일 업로드 구성 및 구현 코드
1단계: 웹 설정.xml 파일의 servlet, multipart-config 추가:
<!-- SpringMVC -->
<servlet>
<servlet-name>myWeb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc/servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<multipart-config>
<!-- <location>/</location> -->
<max-file-size>5242880</max-file-size> <!-- :5MB-->
<max-request-size>20971520</max-request-size> <!-- :20MB-->
<file-size-threshold>0</file-size-threshold> <!-- , -->
</multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>myWeb</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2단계: servlet에서.xml에서 MultipartResolver 구성:
<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>
3단계: 폼을 수신하는 Controller를 만듭니다.
package com.xjj.web.controller;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.xjj.json.JsonResult;
/**
*
* @author XuJijun
*
*/
@Controller
@RequestMapping("/servlet/file")
public class FileUploadController {
/**
* , web 、
*/
private static final String SAVE_DIR = "uploadFiles";
@RequestMapping("/upload")
public @ResponseBody JsonResult upload(HttpServletRequest request, HttpServletResponse response, @RequestParam Map<String, Object> p)
throws ServletException, IOException {
// web application
String appPath = request.getServletContext().getRealPath("");
//
String savePath = appPath + File.separator + SAVE_DIR;
// , mkdir
File fileSaveDir = new File(savePath);
if (!fileSaveDir.exists()) {
fileSaveDir.mkdir();
}
for (Part part : request.getParts()) {
String fileName = extractFileName(part);
if(!StringUtils.isEmpty(fileName)){
part.write(savePath + File.separator + fileName);
}
}
return new JsonResult("200", " !", savePath);
}
/**
* content-disposition
*
* content-disposition :
* form-data; name="dataFile"; filename="PHOTO.JPG"
*
* @param part
* @return
*/
private String extractFileName(Part part) {
String contentDisp = part.getHeader("content-disposition");
String[] items = contentDisp.split(";");
for (String s : items) {
if (s.trim().startsWith("filename")) {
return s.substring(s.indexOf("=") + 2, s.length()-1);
}
}
return "";
}
}
그중,request.getParts()는 파일을 포함하여 multipart를 가져오는 데 사용됩니다.기타 매개 변수는 @RequestParam Map네 번째 단계: 폼 제출 파일 및 기타 데이터:
<html>
<head>
<meta charset="UTF-8">
<link href="../resources/css/common.css" rel="external nofollow" rel="stylesheet" />
<script src="../resources/js/jquery-2.1.4.js"></script>
</head>
<body>
<h2>File Upload</h2>
<form method="post" enctype="multipart/form-data">
<input type="text" name="aaa"/><br/>
:<input type="file" name="file" size="60" /><br/>
<input type="file" name="file" size="60" /><br/>
<br/> <!-- <input type="submit" value=" " /> -->
</form>
<input type="button" value=" " onclick="upload()"/>
</body>
<script>
function upload(){
$("form").attr('action', "http://localhost:8080/MyJavaStudio/servlet/file/upload");
$("form").submit();
}
</script>
</html>
주: jQuery를 통해submit 폼을 사용하여 액션 URL을 자유롭게 조립하고 제출 단추를 자유롭게 정의합니다.github: https://github.com/xujijun/MyJavaStudio
전체 코드 다운로드:MyJavaStudio_jb51.rar
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.