파일 업로드는 웹 사이트에서 매우 일반적인 기능입니다. 업로드 된 파일을 얻기 위해 서블릿을 사용하여 직접 요청 매개 변수를 구문 분석해야합니다. 따라서 일반적으로 Apache 오픈 소스 도구 인 Common-FileUpload를 사용하도록 선택합니다. 이 JAR 패키지는 Apache의 공식 웹 사이트 또는 Struts의 Lib 폴더 아래에서 찾을 수 있습니다. Struts 업로드의 기능은이 구현을 기반으로합니다.
Common-FileUpload는 Common-IO 패키지에 따라 다르 므로이 패키지도 다운로드해야합니다. 그런 다음 프로젝트 경로에서 가져 오십시오.
다음과 같이 코드를 사용하십시오
패키지 OOP.hg.ytu.servlet; import java.io.file; import java.io.ioexception; import java.io.inputstream; Java.util.list 가져 오기; javax.servlet.servletexception import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import oop.hu.ytu.dao.uploaddomain; import org.apache.commons.fileupload.fileitem; import org.apache.commons.fileupload.disk.diskfileitemfactory; import org.apache.commons.fileupload.servlet.servletfileupload; 공개 클래스 업로드 확장 httpservlet { / *** 핸들 사용자 업로드 요청* / private static final long serialversionuid = 1l; public void doget (httpservletrequest request, httpservletresponse 응답)은 servletexception, ioexception {// string spection = request.getParameter ( "desp업"); DiskFileItemFactory Factory = 새로운 DiskFileItemFactory (); @SuppressWarnings ( "Dequrecation") String Path = request.getRealPath ( "/Upload"); // 디스크 버퍼 경로 SET SetRepository (새 파일 (path)); Factory.SetSizetHreshold (1024*1024); // 버퍼 크기 생성 ServletFileUpload 업로드 설정을 설정합니다. upload.setsizemax (-1); // 업로드 파일 제한 크기 업로드, -1 무제한 시도 {@suppresswarnings ( "확인되지 않은") 목록 <fileitem> list = upload.parserequest (요청); 문자열 va = null; for (fileitem item : list) {// string name = item.getfieldName (); if (item.isformfield ()) {// 파일 스트림 여부 va = item.getString ( "utf-8"); // system.out.println (이름+"="+va); /// request.setAttribute (이름, 값); } else {string value = item.getName (); // 전체 경로 이름을 전달합니다 int start = value.lastIndexof ( "//"); 문자열 filename = value.substring (start+1); // request.setAttribute (이름, filename); inputStream in = item.getInputStream (); uploaddomain dao = new uploaddomain (); //item.write(New 파일 (RealPath, filename)); int index = filename.lastIndexof ( "."); String RealFilename = filename.substring (0, index); 문자열 유형 = filename.substring (index+1); dao.insert (in, realfilename, type, va); // 데이터베이스에 넣습니다}}} catch (예외 e) {e.printstacktrace (); }} public void dopost (httpservletrequest 요청, httpservletreponse 응답) servletexception, ioexception {doget (요청, 응답); }} 여기서 우리는 그것이 텍스트 상자에 정보를 제출하는 것과 같은 양식의 업로드 된 스트림 또는 매개 변수인지를 결정한 다음 데이터베이스에 삽입합니다. 데이터베이스 삽입 코드는 다음과 같습니다
패키지 OOP.hu.ytu.dao; import java.io.inputstream; java.sql.connection 가져 오기; Java.sql.preparedStatement import; java.sql.resultset import; import oop.hg.ytu.utils.jdbcutils; /*** 파일 업로드 지원 제공* @Author Administrator*/public class uploaddomain {/*** 업로드 된 파일을 데이터베이스에 넣습니다*/public void insert (inputStream in, String filename, String type, string section) 예외 {// 데이터베이스 연결에 이미지를 쓰십시오. conn = null; 준비된 상태 ps = null; resultSet rs = null; System.out.println (설명); 시도 {// 2. 연결을 설정하십시오 Conn = jdbcutils.getConnection (); // 3. 문자열 string sql = "fileUpload에 삽입 (파일, 파일 이름, type, des) 값 (?,?,?,?)"; ps = conn.preparestatement (SQL); ps.setBlob (1, in); ps.SetString (2, filename); ps.SetString (3, 유형); ps.SetString (4, 설명); // 4. 진술을 실행 ps.ExecuteUpdate (); 넣다(); } 마침내 {jdbcutils.free (rs, ps, conn); }}} 기본 데이터베이스 가격 크기 한도를 만날 수 있습니다. MySQL 설치 디렉토리에서 my.ini에서 다음 구성을 변경해야합니다.
[mysqld]
max_allowed_packet = 64m
그게 다야. 물론 인코딩 형식에주의하십시오. 파일을 업로드하고 완료하십시오. 또 다른 것은 내 열 이름 중 하나가 설명하도록 설정되어 있으며 결과는 MySQL 예약 단어와 충돌했으며 정보를 삽입 할 수 없다는 것입니다. 미래에주의를 기울여야합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.