锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓涓?/span>Servlet鍙互閫氳繃HTML琛ㄥ崟鏍囩灝嗘枃浠朵笂浼犲埌鏈嶅姟鍣ㄣ傛敮寰呬笂浼犵殑鏈夋枃鏈佸浘鍍忓強浠諱綍鏂囦歡銆?/span>
鍒涘緩鏂囦歡涓婁紶琛ㄥ崟錛?/span>
涓嬮潰鐨?/span>html浠g爜鍒涘緩浜嗕竴涓笂浼犺〃鍗曘傚垱寤鴻繃紼嬮渶瑕佹敞鎰忎互涓嬪嚑鐐癸細
l form鏍囩涓殑method灞炴у繀欏昏緗負POST錛屽嵆GET鏂規硶鏄笉鍙互鐨勩?/span>
l form鏍囩涓殑enctype灞炴у簲璇ヨ緗負multipart/form-data銆?/span>
l from鏍囩涓殑action灞炴у簲璇ヤ笌鏈嶅姟鍣ㄥ悗鍙扮殑servlet鏄犲皠璺緞鐩稿悓銆傛帴涓嬫潵鐨勫疄渚嬶紝鎴戜滑灝嗕嬌鐢?/span>UploadServlet瀹炵幇鏂囦歡涓婁紶銆?/span>
l 瑕佷笂浼犱竴涓枃浠訛紝浣犲簲璇ヤ嬌鐢ㄤ竴涓?/span><input type=”file”.../>鏍囪銆傝澶氫釜鏂囦歡涓婁紶錛屽繀欏誨寘鍚涓叿鏈変笉鍚岀殑鍚嶇О灞炴у肩殑<input type=”file”.../>鏍囪銆?/span>The browser associates a Browse button with each of them銆?/span>
<html> <head> <title>File Uploading Form</title> </head> <body> <h3>File Upload:</h3> Select a file to upload: <br /> <form action="UploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="file" size="50" /> <br /> <input type="submit" value="Upload File" /> </form> </body> </html> |
浠ヤ笂浠g爜灝嗗緱鍒頒互涓嬫晥鏋溿備綘鍙互鍦ㄦ湰鍦?/span>PC涓婇夋嫨涓涓枃浠躲傚綋浣犵偣鍑?#8220;Upload File”錛岃〃鍗曞皢浼氶殢鐫浣犻夋嫨鐨勬枃浠朵竴璧瘋鎻愪氦銆?/span>
鍚庡彴servlet錛?/span>
浠ヤ笅UploadServlet servlet灝嗘帴鏀朵笂浼犵殑鏂囦歡騫跺皢鍏朵繚瀛樺叆<Tomcat-installation-directory>/webapps/data鏂囦歡澶廣傝繖涓枃浠跺す鐨勫悕縐板彲浠ラ氳繃澶栭儴閰嶇疆鏂囦歡web.xml涓殑context-param鍏冪礌鍐呭澧炲姞銆備唬鐮佸涓嬶細
<web-app>
....
<context-param>
<description>Location to store uploaded file</description>
<param-name>file-upload</param-name>
<param-value>
c:"apache-tomcat-5.5.29"webapps"data"
</param-value>
</context-param>
....
</web-app>
|
浠ヤ笅鏄疄鐜頒簡澶氭枃浠跺悓鏃朵笂浼犲姛鑳界殑UploadServlet銆傚湪姝や箣鍓嶆偍蹇呴』紜畾浠ヤ笅鍑犵偣錛?/span>
l 浠ヤ笅瀹炰緥渚濊禆F ileUpload綾伙紝鎵浠ユ偍欏誨皢鏈鏂扮増鐨?/span>commons-fileupload.x.x.jar鏀懼埌鎮ㄧ殑classpath涓嬨傚彲浠ヤ粠榪欓噷涓嬭澆錛?/span>http://commons.apache.org/fileupload/銆?/span>
l FileUpload綾諱緷璧栦簬Commons IO鍖咃紝鎵浠ユ偍欏誨皢鏈鏂扮増commons-fileupload.x.x.jar鏀懼埌鎮ㄧ殑classpath涓嬨傚彲浠ヤ粠榪欓噷涓嬭澆錛?/span>http://commons.apache.org/io/銆?/span>
l 鍦ㄦ祴璇曚互涓嬩緥瀛愮殑鏃跺欙紝鎮ㄥ簲璇ヤ笂浼犲皬浜?em>maxFileSize鐨勬枃浠訛紝鍚﹀垯鏃犳硶涓婁紶銆?/span>
l 浜嬪厛紜畾浣犲凡緇忓緩璁ソ鏂囦歡澶癸細c:"temp鍜?/span>c:"apache-tomcat-5.5.29"webapps"data銆?/span>
// Import required java libraries
import java.io.*;
import java.util.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.output.*;
public class UploadServlet extends HttpServlet {
private boolean isMultipart;
private String filePath;
private int maxFileSize = 50 * 1024;
private int maxMemSize = 4 * 1024;
private File file ;
public void init( ){
// Get the file location where it would be stored.
filePath =
getServletContext().getInitParameter("file-upload");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, java.io.IOException {
// Check that we have a file upload request
isMultipart = ServletFileUpload.isMultipartContent(request);
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter( );
if( !isMultipart ){
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet upload</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>No file uploaded</p>");
out.println("</body>");
out.println("</html>");
return;
}
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Location to save data that is larger than maxMemSize.
factory.setRepository(new File("c:""temp"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax( maxFileSize );
try{
// Parse the request to get file items.
List fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet upload</title>");
out.println("</head>");
out.println("<body>");
while ( i.hasNext () )
{
FileItem fi = (FileItem)i.next();
if ( !fi.isFormField () )
{
// Get the uploaded file parameters
String fieldName = fi.getFieldName();
String fileName = fi.getName();
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
// Write the file
if( fileName.lastIndexOf("""") >= 0 ){
file = new File( filePath +
fileName.substring( fileName.lastIndexOf(""""))) ;
}else{
file = new File( filePath +
fileName.substring(fileName.lastIndexOf("""")+1)) ;
}
fi.write( file ) ;
out.println("Uploaded Filename: " + fileName + "<br>");
}
}
out.println("</body>");
out.println("</html>");
}catch(Exception ex) {
System.out.println(ex);
}
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, java.io.IOException {
throw new ServletException("GET method used with " +
getClass( ).getName( )+": POST method required.");
}
}
|
緙栬瘧騫惰繍琛孲ervlet
緙栬瘧浠ヤ笂UploadServlet騫跺湪web.xml涓垱寤哄繀欏葷殑瀹炰綋錛屽涓嬶細
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
|
鐜板湪鍙互灝濊瘯浣跨敤浣犲垱寤虹殑HTML琛ㄥ崟涓婁紶鏂囦歡銆傚綋浣犺闂?/span>http://localhost:8080/UploadFile.htm錛屾祻瑙堝櫒閲屽皢浼氭樉紺哄涓嬫晥鏋滐紝鎮ㄥ彲浠ヤ粠鏈湴涓婁紶浣犳兂瑕佷笂浼犵殑浠諱綍鏂囦歡銆?/span>
濡傛灉鎮ㄧ殑servlet鑴氭湰榪愯鎴愬姛錛屾偍鐨勬枃浠朵笂浼犲湪c:"apache-tomcat-5.5.29"webapps"data"directory鏂囦歡澶廣?/span>