머리말
웹 응용 프로그램을 개발할 때는 이미지를 아바타로 업로드하는 것과 같은 업로드 기능을 사용자에게 제공해야합니다. 파일을 업로드하려면 양식의 메소드를 게시하고 ENCTYPE를 multipart/form-data 로 설정해야합니다. 이 경우에만 브라우저는 사용자의 선택된 파일의 이진 데이터를 서버로 보냅니다. 이 기사는 Struts2 프레임 워크에서 업로드 기능에 대한 자세한 요약을 제공합니다. 아래에서 많이 말하지 않겠습니다. 자세한 소개를 함께 살펴 보겠습니다.
struts2 파일 업로드
struts2는 자체 요청 파서를 제공하지 않습니다. 바이너리 요청 데이터를 구문 분석하기 위해 다른 업로드 프레임 워크를 호출해야하지만 Struts2는 원래 업로드 파서를 추가로 캡슐화하여 파일 업로드를 추가로 단순화합니다.
struts2의 default.properties 구성 파일에서 다음과 같은 구성 코드를 볼 수 있습니다.
### Parser는 HTTP Post 요청을 처리하는 Parser, Mime-Type Multipart/Form-Data# struts.multipart.parser = cos# struts.multipart.parser = pell# struts.multipart.parser = jakarta-streamstruts.multipart.parser = jakarta# javax.soplet. defaulttruts.multipart.savedir = struts.multipart.maxsize = 2097152
위의 코드는 주로 Struts2에서 파일을 업로드 할 때 업로드 파서를 구성하는 데 사용됩니다. Struts2의 캡슐화는 기본 파일 업로드 구성 요소 간의 차이를 분리합니다. 이 구성 파일을 업로드하는 데 사용되는 경우 개발자는 다른 파일 업로드 프레임 워크간에 쉽게 전환 할 수 있습니다.
Struts2는 기본적으로 자카르타 업로드 파서를 사용합니다. 물론 마음에 들지 않으면 다른 것으로 전환 할 수도 있습니다. 다음은 Code를 통해 struts2를 기반으로 간단한 파일 업로드 함수입니다.
파일 업로드의 동작을 구현하십시오
프론트 데스크 페이지 :
<form action = "Upload"method = "post"encType = "multipart/form-data"> 제목 : <입력 유형 = "text"name = "title"> <br> 파일 : <input type = "file"name = "업로드"> <br> <입력 유형 = "제출"value = "제출"> </form>
액션 클래스 :
공개 클래스 업하는 ActionSupport {private String Title; 개인 파일 업로드; 비공개 문자열 업로드 컨텐츠 타입; 개인 문자열 uploadFilename; 개인 문자열 savepath; public void setsavepath (문자열 값) {this.savepath = value; } private string getAvePath () {String realPath = servletActionContext.getServletContext (). getRealPath ( "/web-inf/" + savepath); realpath를 반환하십시오. } public void settitle (문자열 값) {this.title = value; } public string getTitle () {return title; } public void setUpload (파일 값) {this.upload = value; } 공개 파일 getUpload () {return ubload; } public void setUploadContentType (문자열 값) {this.uploadContentType = value; } public String getFileContentType () {return uploadContentType; } public void setUploadFileName (문자열 값) {this.uploadFilename = value; } public String getUploadFilename () {return uploadFilename; } @override public string () execture ()는 예외 {fileoutputStream fos = new FileOutputStream (getSavePath () // " + getUploadFilename ()); fileInputStream fis = new FileInputStream (getUpload ()); 바이트 [] 버퍼 = 새로운 바이트 [1024]; int len = 0; while ((len = fis.read (buffer))> 0) {fos.write (buffer, 0, len); } fis.close (); fos.close (); 반환 성공; }}struts.xml 구성 파일 :
<package name = "upload"extends = "struts-default"> <action name = "upload"> <param name = "savepath">/upload </param> <result name = "success">/success.jsp </result name = "input">/index.jsp </result> </action> </package>
액션 클래스의 경우 두 가지 특수 속성이 포함되어 있습니다.
이 두 속성은 업로드 된 파일의 파일 이름과 업로드 된 파일의 파일 유형을 캡슐화하는 데 사용됩니다. struts2의 경우 양식 양식에 이름 속성 xxx가있는 파일 필드가 포함 된 경우 해당 조치는 세 가지 속성을 사용하여 파일 필드의 정보를 캡슐화해야합니다.
위의 개발 프로세스를 통해 Struts2를 통해 파일을 업로드하는 것이 실제로 간단하다는 것을 알 수 있습니다. 우리가해야 할 일은 파일 도메인을 작동중인 유형 파일의 속성과 연결하여 업로드 된 파일의 파일 내용에 쉽게 액세스 할 수 있도록하는 것입니다. Struts2가 Multipart Parser를 사용하는 방법에 대해서는 개발자에게 완전히 투명합니다.
파일 필터링을 수동으로 구현합니다
웹 애플리케이션은 여러 번 사용자가 자유롭게 업로드 할 수 없습니다. 사용자가 업로드 한 파일 유형과 파일 크기를 제한해야하므로 파일 업로드 중에 파일 필터링을 수행해야합니다. 이제 업로드 파일 필터링을 수동으로 구현합니다.
지원되는 업로드 유형을 표시하려면 struts.xml에서 새 매개 변수를 구성하십시오.
<param name = "allowtypes"> image/png, image/gif, image/jpeg </param>
작동중인 유효성 검사 기능 추가 :
// @OverRidePublic void validate () {String FilterResult = FilterType (getalketTypes (). split ( ",")); if (filterresult! = null) {addfielderror ( "업로드", "업로드 할 파일 유형이 올바르지 않습니다!"); }} public String filterType (String [] type) {String filetype = getFileContentType (); for (문자열 유형 : type) {if (type.equals (filetype)) {return null; }} 반환 오류;} 이는 유형 판단을 구현 한 다음 파일 클래스의 length() 메소드를 기반으로 크기 검증을 구현합니다. 그러나 너무 번거 롭습니다. 더 간단한 진술에 대해 이야기합시다.
인터셉터는 파일 필터링을 구현합니다
struts2는 파일 업로드를위한 인터셉터를 제공하며 인터셉터를 구성하여 파일 필터링을보다 쉽게 달성 할 수 있습니다. struts2에서 파일 업로드의 FileUpload. 인터셉터가 작동하려면 동작에서 인터셉터 참조 만 구성하면됩니다.
FileUpload 인터셉터를 구성 할 때는 두 가지 매개 변수를 지정할 수 있습니다.
<!-FileUpload 인터셉터 구성-> <interceptor-ref name = "fileUpload"> <param name = "allendTypes"> image/png, image/gif, image/jpeg </param> <param name = "maxumSize"> 200000000 </param> </interceptor-ref> <!-interceptor-re-intercrector-re-intercrector-ref interceptor-> 이름 = "DefaultStack"/> <결과 이름 = "success">/success.jsp </result>
이러한 방식으로 구성 수정을 수행 할 수 있으며 코드를 작성하는 것보다 훨씬 쉽습니다.
구성 오류 메시지
업로드 오류의 경우 시스템이 기본적으로 영어 오류 메시지를 표시합니다. 그러나 국제 프롬프트 메시지를 출력하려면 다음 두 가지 주요 메시지 정의를 국제 리소스 구성 파일에 추가해야합니다.
struts.messages.error.content.type.not.allowed = 업로드 파일 유형이 올바르지 않은 경우 다시 업로드하십시오.struts.messages.error.file.too.large = 업로드 한 파일이 너무 커서 다시 업로드하십시오.다음으로 <s : fielderror/>를 사용하여 오류 메시지를 출력 할 수 있습니다.
파일 업로드에 대한 일정한 구성
기사의 시작 부분에서는 struts.multipart.saveDir 구성이있는 default.properties 의 구성에 대해 이야기합니다. 그렇다면이 구성 항목의 특정 기능은 무엇입니까?
struts2 파일 업로드 과정에서 업로드 프로세스 중에 생성 된 임시 파일을 저장하려면 임시 폴더를 지정해야합니다. 임시 폴더가 지정되지 않은 경우 시스템은 Tomcat 설치 경로 아래의 작업/Catalina/LocalHost/Path에서 javax.servlet.context.tempdir 사용하여 기본적으로 기본적으로 표시됩니다. 그리고이 struts.multipart.savedir는 임시 파일의 저장 위치를 구성합니다. 따라서 개발 과정에서 디렉토리에 읽고 쓰기 권한이 있는지 여부에주의를 기울여야합니다.
업로드 된 파일의 크기를 나타내는 struts.multipart.maxSize 구성도 있습니다. 이 구성의 최대 규모 속성과 FileUpload 인터셉터의 최대 규모 속성이 동시에 지정되면 먼저 struts.multipart.maxSize 구성의 최대 규모 속성과 비교 한 다음 FileUpload 인터셉터의 최대 특성과 비교합니다. 파일 크기가 struts.multipart.maxSize 의 최대 규모 구성을 초과하면 예외가 나타나고 결과가 입력으로 전송되지 않습니다. 이것에주의를 기울이십시오.
요약
이 기사는 Struts2의 파일 업로드를 자세히 요약합니다. 기본적으로 매뉴얼의 모든 내용이 많은 내용이 있습니다. 글쎄, 그냥 매뉴얼로 사용하십시오.
좋아, 위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.