Apache가 제공하는 Commons-FileUpload JAR 패키지는 파일을 업로드하는 것이 매우 간단합니다. 최근에 이미지 업로드 기능을 수행하려면 Servlet/JSP를 사용해야합니다. 온라인에서 많은 정보를 찾았으며 대부분은 Struts 프레임 워크를 기반으로 소개됩니다. 그들 중 일부는 또한 공통 파일 부로의 업로드를 소개하지만, 그 예제는 비교적 오래되었으며 일부 범주는 이제 버려졌습니다.
연구 및 연구 요약을 통해 업로드 기능이 마침내 완료되었습니다. 아래에서 당신과 공유하겠습니다.
사례 시나리오
라이브러리 백엔드 관리 인터페이스는 책 사진 업로드 기능을 제공하고 마지막으로 페이지에 표시해야합니다.
효과를 실현하십시오
책 첨가 페이지를 입력하면 기본 이미지가 "아직 획기적인 획기적인"(길이와 너비는 200px)로 표시되며 다음 이미지와 같이 버튼이 "이미지 업로드"에 제공됩니다.
"사진 업로드"버튼을 클릭하면 아래 그림과 같이 업로드 인터페이스가 모드 창을 통해 팝업됩니다.
"찾아보기"버튼을 통해 지정된 이미지를 선택하고 "업로드"버튼을 클릭하여 업로드하십시오. 업로드가 성공하면 성공적인 프롬프트가 나타납니다. 사용자가 "OK"를 클릭 한 후 아래 그림과 같이 팝업 창을 닫고 페이지에 새 이미지를 자동으로 표시합니다.
코드 구현
first 책 생성 페이지 추가 페이지 : bookadd.jsp
Page ID가있는 숨겨진 태그는 이미지 경로를 저장하는 데 사용됩니다. 이미지 경로를 저장하는 데 사용됩니다.이 경로는 백그라운드에 제출하기에 편리하고 데이터베이스에 저장되며 img_id의 ID와 함께 <Img> 태그는 이미지를 표시하는 데 사용됩니다. 모든 사진은 쉽게 읽을 수 있도록 서버 아래에 저장됩니다. 그런 다음 키 js로 버튼을 클릭하여 모드 창을 통해 업로드 페이지를 나타냅니다. 모드 창이 팝업되면 변수 승리가 정의되어 모드 창으로 다시 전송되는 이미지 경로 값을 얻는 데 사용됩니다.
(참고 : 보안 문제로 인해 사진은 마음대로 저장할 수 없습니다. 프로젝트가 서버에 배포 된 경우 서버에서 사진을 볼 수 있습니다. 현재 서버에 있지 않은 사진을 읽어야하는 경우 서버의 가상 디렉토리를 구성해야합니다).
<html> <head> <title> 책 추가 </title> <script type = "text/javaScript"> // 페이지 업로드 기능 열기 기능 OpenUpload () {var win = wind if (win! = null) {document.getElementById ( "photo_id"). value = win; document.getElementById ( "img_id"). src = "<%= root%>/"+win; }} </script> </head> <body> <h5> 책 추가 </h5> <hr/> <p> 책 표지 : <label> <입력 유형 = "hidden"id = "photo_id"name = "photo"value = "images/noimg.png"> <input type = "button"onclick = "inclick ="valload = "upload" "ubload" "upload" " id = "img_id"src = "<%= root%>/images/noimg.png"> </label> </body> </html> ② 이미지 업로드 페이지, bookupload.jsp를 만듭니다
<base> 태그를 정의해야합니다. 현재 모드 창이 닫히면 데이터를 모 양식으로 되돌릴 수 있습니다. <form> 태그는 제출 된 파일을 백그라운드에서 얻을 수 있도록 속성 ENCTYPE = "Multipart/Form-Data"를 설정해야합니다. "업로드"버튼을 클릭하여 파일을 배경으로 전송합니다. 나머지 하이라이트는 배경 업로드 처리입니다.
<html> <head> <meta http-equiv = "content-type"content = "text/html; charset = gbk"> <meta http-equiv = "pragma"content = "no-cache"/> <span style = "color : #ff0000;"> self "> </span> <title> book picture up up up up up up up up up up up up up up up up up up up up up up up up up up target> < <H5> 그림 업로드 </h5> <hr/> <p style = "color : red"> $ {requestscope.errormsg} </p> <form id = "form1"name = "form1"action = "<%= root%>/bookservlet? type = bookupload"method = "post"encType = "multip-data"> <div> note wance wance worlome worly the the imge <div> <div> < <div> <입력 유형 = "file"name = "file_upload"/> </div> <div> <입력 유형 = "제출"value = "upload"/> </div> </form> </body> </html> ③ 일반 서블릿을 생성하면 일부 주요 코드 만 아래에 제공됩니다.
빨간색 코드 부분은 업로드 된 키 코드이며 다른 코드는 장식으로 사용됩니다. 이 세 단계를 완료하면 간단한 업로드가 달성됩니다.
Public Class Bookservlet는 httpservlet {private String uploadpath = "eShop/upload/"; // 파일 업로드를위한 디렉토리 개인 문자열 temppath = "eShop/uploadtmp/"; // 임시 파일 디렉토리 개인 문자열 serverPath = null; private int sizemax = 3; // 최대 이미지 상한 개인 문자열 [] filetype = new String [] { ". jpg", ". gif", ". bmp", ". png", ". jpeg", ". ico"}; public void doget (httpservletrequest request, httpservletreponse response)는 servletexception, ioexception {serverpath = getServletContext (). getRealPath ( "/")를 던졌습니다 ( "//", "/"); // 서블릿이 초기화되면 실행됩니다. 업로드 된 파일 디렉토리가 존재하지 않으면 if (! 새 파일 (serverPath+ubloadPath) .isdirectory ()) {새 파일 (serverPath+ubloadPath) .mkdirs (); } if (! 새 파일 (serverPath+tempPath) .isdirectory ()) {새 파일 (serverpath+temppath) .mkdirs (); } <span style = "color : #ff0000;"> diskfileItemFactory factory = new DiskFileItemFactory (); </span> factory.setSizetHreshold (5*1024); // Maximum Cache Factory.SetRepository (새 파일 (ServerPath+TempPath)); // 임시 파일 디렉토리 <span style = "color : #ff0000;"> servletfileUpload upload = new ServletFileUpload (팩토리); </span> upload.setsizemax (sizemax*1024*1024); // pile string의 string의 string; {<span style = "color : #ff0000;"> list <fileItem> items = upload.parserequest (request); </span> // (fileItem 항목 : items) {// filename get filename에 대한 모든 파일 목록 가져옵니다. item.getName (). tolowercase (); if (filename.endswith (filetype [0]) || filename.endswith (filetype [1]) || filename.endswith (filetype [2]) || filename.endswith (filetype [3]) || filename.endswith (filetype [4]) || filename.endswith (5]) {string theTyp uuid.randomuuid (). toString (); FilePath = ServerPath+UploadPath+UUID+filename.substring (filename.lastIndexof ( ".")); <span style = "color : #ff0000;"> item.write (새 파일 (filepath)); </span> printwriter pw = response.getWriter (); pw.write ( "<cript> alert ( 'Uploaded'); wind pw.flush (); pw.close (); } else {request.setAttribute ( "errormsg", "업로드 실패, 업로드 된 파일이 존재하고 그림임을 확인하십시오!"); request.getRequestDispatcher ( "/admin/bookupload.jsp"). FORMPER (요청, 응답); }}}} catch (예외 e) {e.printstacktrace (); request.setattribute ( "errormsg", "업로드 실패, 업로드 된 파일 크기가"+sizemax+"m"을 초과 할 수 없는지 확인하십시오. request.getRequestDispatcher ( "/admin/bookupload.jsp"). FORMPER (요청, 응답); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.