앞에 쓰십시오
파일 업로드와 관련하여 먼저 비즈니스 로직에 대해 이야기해야합니다. 모든 사람이 업로드 된 파일 (예 : 홈페이지의 광고 또는 배너 등)을 볼 수 있다면 이미지를 정적 자원 영역 (CSS 및 JS와 동일한 위치)에 넣습니다. 파일이 보호 된 경우 (예 : 사용자는 직접 업로드 한 사진 만 볼 수 있음) 사진이 특별히 저장되는 서버의 위치에 저장합니다.
이 예제는 두 위치에 저장된 파일을 업로드하는 방법을 보여줍니다. 확장으로 업로드 한 후 업로드 된 파일을보고 업로드 된 파일을 다운로드하는 기능도 추가됩니다.
준비
SpringMVC 및 Import Commons 패키지를 구성하십시오
MVC-Servlet.xml에서 파일 업로드 파서를 구성하십시오
<!-파일 업로드 파서-> <bean id = "multipartresolver"> <property name = "maxuploadsize"value = "10000000"/> <속성 이름 = "defaultencoding"value = "utf-8"/> </bean>
정적 자원 영역에 저장됩니다
1. 스토리지 위치 :
프로젝트에 저장되므로 경로는 프로젝트와 관련된 경로입니다.
/{yourproject}/webapp/static/img
2. 응답 핸들러를 구성하십시오
@ControllerPublic Class UploadController {@getMapping ( "/upload") public String uploadHandler () {return "ubload"; } @postmapping ( "/upload/static") public void writostatic (httpservletrequest 요청, riderectattributes riderectattributes, @requestparam ( "filename") multipartfile 파일) {if (! file.isempty ()) {// request.getservletcontext ( "). "정적/IMG/"; // 사용자 문자열에 의해 업로드 된 소스 파일 이름을 가져옵니다. filename = file.getoriginalFilename (); // 새 파일 생성 파일 파일 1 = 새 파일 (path, filename); // 파일을 file.transferto (file1)에 작성합니다. redirectattributes.addflashattribute ( "메시지", "정적 성공에 업로드"); "리디렉션 :/업로드"를 반환합니다. } else {redirectattributes.addflashattribute ( "message", "업로드 파일이 비어있을 수 없음"); "리디렉션 :/업로드"를 반환합니다. }}}서버에 저장하십시오
1.이 예제의 저장 위치 :
서버의 특정 위치에 저장되면 프로젝트와 관련이 없으므로 주소는 절대적인 경로입니다.
/user/mac/goodtop/imgtemp/는 디렉토리의 절대 경로입니다.
2. 응답 핸들러를 구성하십시오
... @postmapping ( "/upload/disk") public string writeTodisk (httpservletrequest request, @requestparam ( "filename") multipartfile 파일, redirectattributes redirectattributes) {if (! file.isempty ()) {// pile.getoriginalfilename (); // 파일 저장 폴더 Path String Path = "/Mac/Desktop/ImgTemp/"; // 새 파일 생성 파일 파일 1 = 새 파일 (path, filename); // file file.transferto (file1)를 씁니다. }} ...확장 부품 (파일보기 및 다운로드)
응답은 스트림 형식으로 파일을 전달하는 것이므로 응답의 미미 유형을 브라우저에서 올바르게 구문 분석 할 수 있도록 설정해야합니다. 응용 프로그램 파일의 기본 미미 유형은 Application/Octet-stream입니다. MIME 이이 값으로 설정된 후 브라우저는 자동으로 실행되거나 해당 파일을 실행하도록 요청하지 않으며 첨부 파일 처리 형태로 파일을 로컬 영역으로 직접 다운로드합니다.
Mimie에 대한 자세한 내용은이 기사를 확인하십시오
다운로드 파일의 이름을 사용자 정의하려면 컨텐츠 예측 메시지를 설정해야합니다.
컨텐츠 방향 메시지 헤더는 인라인 (즉, 웹 페이지 또는 페이지의 일부)이든 첨부 파일 형태로 로컬로 다운로드하여 저장된 회신의 형식을 나타냅니다.
내용에 대한 자세한 내용은이 기사를 확인하십시오
...@getMapping ( "/download/bydefault") public void getImgByDefault (@requestParam 문자열 filename, @requestParam (requestparam (requeStparam) (request, defaultValue = "") String Savename), httpservletresponse reponsking {if (stringutils.isempty (filename)) {404); 반품; } // 파일 스토리지 문자열 경로 = "/사용자/Mac/Desktop/ImgTemp/"; // 새 파일 파일 = 새 파일 (path, filename); if (! file.exists ()) {response.senderror (404); 반품; } // 요청 매개 변수 Savename이 비어 있지 않은 경우 파일을 다운로드 if (! stringUtils.isempty (savename)) {// 응답 길이 응답을 설정합니다. // 응답에 대한 응답의 마임 유형을 설정/Octet-stream response.setContentType (mediaType.Application_octet_stream_value); savename = new String (savename.getBytes ( "UTF-8"), "iso8859-1"); // 첨부 파일로 컨텐츠 예측을 설정합니다. filename = savename responsk.setheader (httpheaders.content_disposition, "첨부 파일; filename =/" "+savename+"/""); } // 파일을 읽습니다. inputStream은 = new FileInputStream (file); outputStream os = response.getOutputStream (); // 출력 파일 ioutils.copy (is, os); os.flush (); os.close (); is.close ();}또한 SpringMVC와 함께 제공되는 ByteArrayhttpMessageConverter 변환기를 출력 파일로 사용할 수도 있습니다. 모든 MIME 요청 정보를 읽을 수 있으며 응답 정보의 MIME는 Application/Octet-Stream입니다.
...@getMapping ( "/download/byconvert") public httpentity <byte []> getImgbyConvert (@requestparam string filename, @requestparam (requestparam (request, defaultValue = ")) 문자열 savename) {if (stringutils.isempty (filename)) } String Path = "/Users/Mac/Desktop/ImgTemp/"; 파일 = 새 파일 (path, filename); if (! file.exists ()) {return new responseentity <> (httpstatus.not_found); } httpheaders headers = new httpheaders (); if (! stringUtils.isempty (savename)) {headers.setContentType (mediaType.application_octet_stream_value); headers.setContentLength (file.length ()); Savename = new Sting (Savename.getBytes ( "UTF-8"), "ISO8859-1"); headers.add (httpheaders.content_disposition, "첨부 파일; filename =/" " + savename +"/""); } else {headers.setContentType (mediaType.image_png); } 새로운 httpentity <> (filecopyutils.copytobytearray (파일), 헤더);} 반환upload.jsp
<%@ page contenttype = "text/html; charset = utf-8"language = "java"%> <%@ taglib prefix = "form"uri = "http://www.springframework.org/tags/form"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %> <! doctype html> <html> <head> <meta charset = "utf-8"> <meta name = "viewport"content = "width = device-width, user-scalable = no, maximumest = 1.0, 최소 스케일 = 1.0 "> <meta http-equiv ="x-ua-compative "content ="ie = edge "> <title> 문서 </title> <link rel ="stylesheet "href ="/static/bootstrap-3.3.3.3.5-dist/css/bootstrap.css "rel = <hip> Scatter </h1> <c : if test = "$ {empty message}"> <h2> $ {message} </h2> </c : if> <form : form enctype = "multipart/form-data"action = "/upload/static"> <p> 업로드/web/static </p> < "> upload : </label> <"파일 ". 이름 = "uploadfile"> <button> 제출 </button> </form : form> <form : form enctype = "multipart/form-data"action = "/upload/disk"> <p> 디스크에 업로드 </p> <레이블을 업로드합니다. href = "/download/bydefault? filename = dubbo.png"rel = "external nofollow"target = "_ blank"> 기본 메소드를 사용하여 디스크에 업로드 된 Dubbo 이미지를보기 </a> </button> <button> <a href = "/bydefault? filename = dubbo.png & savename = dubb.png"repleral "> Dubbo 이미지를 다운로드하는 기본 메소드 </a> </div> <div> <div> <button> <a href = "/download/byconvert? filename = dubbo.png"rel = "external nofollow"> 기본 메소드를 사용하여 Dubbo 이미지를 다운로드하려면 </a> </button> </div> <div> <buttle> <a href = "/byconvert?" rel = "외부 nofollow"target = "_ blank"> mvc 컨버터를 사용하여 디스크에 업로드 된 더보 이미지를 볼 수 있도록 mvc 컨버터를 사용하십시오 </a> </button> <button> <a href = "/download/byconvert? filename = dubbo.png & savename = dub.png"rel = "external nofollow"> dubbo 이미지를 사용하여 upload to upload to up -upload to up -upload to up upload to up upload. </div> </div> </body> </html>위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.