현재 파일 업로드에 일반적으로 사용되는 두 가지 방법이 있으며, 하나는 SmartUpload 이고 다른 하나는 Apache의 Commons FileUpload 입니다.
여기서 우리는 주로 두 번째 사용법을 소개합니다. 먼저 파일을 업로드하고 몇 가지 문제에주의를 기울여야합니다.
1 양식 양식에서 공간을 추가하십시오 <input type = "file"name = "myfile">
2 양식 양식의 내용 형식은 멀티 파트/양식 데이터 형식으로 정의되어야합니다.
3 필수 클래스 라이브러리 : 1 Commons-Io.jar 2 Commons-FileUpload-1.3.1.jar
다음으로 사용법을 살펴 보겠습니다.
먼저 Apache Commons FileUpload의 공식 문서를 읽으면 다음으로 사용되는 다음 기능을 찾을 수 있습니다.
1 파일 구문 분석 객체를 만듭니다
코드 사본은 다음과 같습니다. DiskFileUpload DiskFileUpload = New DiskFileUpload ();
2 파일을 구문 분석 한 후에는 목록에 넣습니다. 이 클래스 라이브러리는 여러 파일 업로드를 지원하므로 결과는 목록에 저장됩니다.
코드 사본은 다음과 같습니다. list <fileitem> list = diskfileupload.parserequest (요청);
3 파일 업로드 및 분석을 수행하십시오 (필요하지 않음)
코드 사본은 다음과 같습니다. file remoteFile = new File (new String (fileItem.getName (). getBytes (), "utf-8"));
4 새 개체를 만들고 스트리밍 사본을 수행합니다
file1 = 새 파일 (this.getServletContext (). getRealPath ( "첨부 파일"), remoteFile.getName ()); file11.getParentFile (). mkdirs (); file1.createnewfile (); inputStream ins = fileItem.getInputStream (); outputStream ous = 새 FileOutputStream (file1); try {byte [] buffer = new Byte [1024]; int len = 0; while ((len = ins.read (buffer))> -1) ous.write (buffer, 0, len); out.println ( "파일을 저장하기 위해"+file1.getabsolutepath ()+"<br/>"); } 마침내 {ous.close (); ins.close (); }이런 식으로 파일 업로드를 완료합니다.
fileUpload.html
<form action = "servlet/uploadservlet"method = "post"enctepe = "multipart/form-data"> <div align = "center"> <fieldset> <legend> velign> <br align = "div align ="left "> upload1 </div> <div align ="left file1 </div ""<input type = ""file "" "" "" "" "" "<div". 이름 = "file1"/> </div> <div align = "left"> file2 </div> <div align = "left"> <input type = "file"name "name"= "file2"/> </div> <div> <div elign = 'left'> 파일 습기 1 </div> <div align = 'left'<input type = "name"description ""description1 ""name ""name ""name ""name ""name "name" <div align='left'>Upload file instructions2</div> <div align='left'><input type="text" name="description2"/></div> </div> <div> <div align='left'> <input type='submit' value="upload file"/> </div> </fieldset> </div> </form>
web.xml
<Servlet> <Servlet-name> 업로드-앤 서블릿 </servlet-name> <servlet-class.test.test.hello.uploadservlet </servlet-class> </servlet-mapping> <servlet-name> uploadservlet </servlet-name> <url-pattern>/servlet </servlet-pattern>
업로드 슨트 .java
package com.test.hello; import java.io.file; import java.io.fileoutputStream; import java.io.ioexception; import java.io.inputStream; import java.io.outputStream; import java.io.printwriter; import java.util.list; import javax.servlet.servletexemence; javax.servlet.http.httpservlet; import javax.servlet.http.htttp.httpervletrequest; import javax.servlet.http.http.httpervletresponse; import org.apache.commons.fileupload.diskfileupload; import org.apache.commons.fileupload org.apache.commons.fileupload.fileuploadexception; public class uploadservlet는 httpservlet { /*** 객체의 생성자를 확장합니다. */ public uploadservlet () {super (); } /*** 서블릿의 파괴. <br> */ public void destroy () {super.destroy (); // "Destion"String을 로그에 넣습니다. // 코드를 여기에 넣습니다} /*** 서블릿의 doget 메소드. <br> * *이 방법은 양식에 태그 값 메소드가있는 경우 호출됩니다. * * @param 요청 클라이언트가 서버로 보내는 요청을 요청합니다 * @Param 응답 서버가 클라이언트로 보내는 응답 * @Throws ServleTeXception * @throws ioException */ public void doget (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception, ioexception em { 응답 .SetchAracterEncoding ( "UTF-8"); response.getWriter (). println ( "포스트에서 파일을 업로드하십시오"); } /*** 서블릿의 도스트 방법. <br> * *이 메소드는 양식에 태그 값 메소드가 게시되는 경우 호출됩니다. * * @param 요청 요청 요청 요청 요청을 요청합니다. 클라이언트가 서버로 보내는 요청을 요청합니다 * @param 응답 서버가 클라이언트로 보내는 응답 * @throws servletexception * @throws ioexception */ @suppresswarnings ({ "Checked", "Public voidection") servletexception, ioexception {file file1 = null, file2 = null; 문자열 description1 = null, description2 = null; 응답 .SetchAracterEncoding ( "UTF-8"); request.setcharacterencoding ( "UTF-8"); Response.setContentType ( "Text/Html"); printwriter out = response.getwriter (); DiskFileUpload DiskFileUpload = New DiskFileUpload (); {list <fileitem> list = diskfileupload.parserequest (request); out.println ( "모든 파일을 전송 ... <br/>"); for (fileItem fileItem : list) {if (fileItem.isformfield ()) {if ( "descripment1".Equals (fileItem.getFieldName ())) {out.println ( "description1 ... <br/>"); description1 = 새 문자열 (fileitem.getString (). getBytes (), "utf-8"); } if ( "description2".Equals (fileItem.getFieldName ())) {out.println ( "Description2로 이동 ... <br/>"); description2 = 새 문자열 (fileitem.getString (). getBytes (), "utf-8"); }} else {if ( "file1".equals (fileItem.getFieldName ())) {file remoteFile = new File (new String (fileItem.getName (). getBytes (), "utf-8"); out.println ( "File1로 이동 ... <br/>"); out.println ( "클라이언트 파일 위치 :"+remotefile.getabsolutepath ()+"<br/>"); file1 = 새 파일 (this.getServletContext (). getRealPath ( "첨부 파일"), remoteFile.getName ()); file11.getParentFile (). mkdirs (); file1.createnewfile (); inputStream ins = fileItem.getInputStream (); outputStream ous = 새 FileOutputStream (file1); try {byte [] buffer = new Byte [1024]; int len = 0; while ((len = ins.read (buffer))> -1) ous.write (buffer, 0, len); out.println ( "파일을 저장하려면"+file1.getabsolutepath ()+"<br/>"); } 마침내 {ous.close (); ins.close (); }} if ( "file2".equals (fileItem.getFieldName ())) {file remoteFile = new File (새 String (fileItem.getName (). getBytes (), "utf-8"); out.println ( "file2로 이동 ... <br/>"); out.println ( "클라이언트 파일 위치 :"+remotefile.getabsolutepath ()+"<br/>"); file2 = 새 파일 (this.getServletContext (). getRealPath ( "첨부 파일"), remoteFile.getName ()); file2.getParentFile (). mkdirs (); file2.createnewfile (); inputStream ins = fileItem.getInputStream (); outputStream ous = 새 FileOutputStream (file2); try {byte [] buffer = new Byte [1024]; int len = 0; while ((len = ins.read (buffer))> -1) ous.write (buffer, 0, len); out.println ( "파일을 저장하기 위해"+file2.getabsolutepath ()+"<br/>"); } 마침내 {ous.close (); ins.close (); }}} out.println ( "요청 구문 분석이 완료되었습니다 <br/> <br/>"); }} catch (fileUploadexception e) {} out.println ( "<! doctype html public/"-// w3c // dtd html 4.01 Transitional // en/">"); out.println ( "<head> <title> a servlet </title> </head>"); out.println ( "<body>"); if (file1! = null) {out.println ( "<div>"); out.println ( "<div align = 'left'> file1; </div>"); out.println ( "<div align = 'left'> <a href = '"+request.getContextPath ()+"/att out.println ( "</div>"); out.println ( "</div>"); } if (file2! = null) {out.println ( "<div align = 'left'> file2; </div>"); out.println ( "<div align = 'left'> <a href = '"+request.getContextPath ()+"/att out.println ( "</div>"); out.println ( "</div>"); } out.println ( "<div>"); out.println ( "<div align = 'left'> description1 : </div>"); out.println ( "<div align = 'left'>"); out.println (description1); out.println ( "</div>"); out.println ( "</div>"); out.println ( "</div>"); out.println ( "<div align = 'left'> description2 : </div>"); out.println ( "<div align = 'left'> description2 : </div>"); out.println ( "<div align = 'left'>"); out.println ( "</div>"); out.println ( "</div>"); out.println ( "</body>"); out.println ( "</html>"); out.flush (); out.close (); } /*** 서블릿의 초기화. <br> * * @throws servletexception 오류가 발생하면 */ public void init ()가 servletexception {// 코드를 여기에 넣습니다}}실행 예제
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.