Java--Servlet MultipartRequest實現上傳文件
MultipartReques類主要是對文件上傳進行的處理,在上傳文件時,編碼格式為enctype="multipart/form-data"格式,以二進制形式提交數據,提交方式為post方式。
html示例代碼
Java示例代碼
package test;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.oreilly.servlet.MultipartRequest;
@SuppressWarnings("serial")
public class TestServlet extends HttpServlet {
@Override
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
MultipartRequest mr=null;
//用來限制用戶上傳文件大小的
int maxPostSize = 1 * 100 * 1024 * 1024;
//第一個參數為傳過來的請求HttpServletRequest,
//第二個參數為上傳文件要存儲在服務器端的目錄名稱
//第三個參數是用來限制用戶上傳文件大小
//第四個參數可以設定用何種編碼方式來上傳文件名稱,可以解決中文問題
mr = new MultipartRequest(request, "E:\zhang", maxPostSize, "GBK");
//傳回所有文件輸入類型的名稱
Enumeration files = mr.getFileNames();
String fileName = "";
String filePath="";
while (files.hasMoreElements()) {
fileName = (String) files.nextElement();
System.out.println("FileName============"+fileName);
//用此方法得到上傳文件的真正的文件名,這里的fileName指文件輸入類型的名稱
filePath = mr.getFilesystemName(fileName);
System.out.println("FilePath============"+filePath);
//此方法得到一個文件對象,代表儲存在服務器上的fileName文件
File f = mr.getFile(fileName);
if (null == f)
throw new ServletException("file is not exist");
}
//可以取得請求參數的名稱
Enumeration enum1=mr.getParameterNames();
while (enum1.hasMoreElements()) {
String s=(String)enum1.nextElement();
System.out.println(s);
String[] str=mr.getParameterValues(s);
for (int i=0;i System.out.println(str[i]); } } } } 運行后結果 16:36:16,346 INFO? [STDOUT] FileName============File2 16:36:16,346 INFO? [STDOUT] FilePath============新建 文本文檔.txt 16:36:16,346 INFO? [STDOUT] FileName============File1 16:36:16,346 INFO? [STDOUT] FilePath============test.txt 16:36:16,346 INFO? [STDOUT] password 16:36:16,346 INFO? [STDOUT] zhy 16:36:16,346 INFO? [STDOUT] userName 16:36:16,346 INFO? [STDOUT] zhang 若出現異常如下,則是maxPostSize 設置太小,文件太大 exception : java.io.IOException: Posted content length of 785 exceeds limit of 1 com.oreilly.servlet.multipart.MultipartParser. com.oreilly.servlet.MultipartRequest. com.oreilly.servlet.MultipartRequest. test.TestServlet.service(TestServlet.java:22) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 若出現異常如下,則提交方式應該為post提交,或編碼形式為enctype="multipart/form-data" exception: java.io.IOException: Posted content type isn't multipart/form-data com.oreilly.servlet.multipart.MultipartParser. com.oreilly.servlet.MultipartRequest. com.oreilly.servlet.MultipartRequest. test.TestServlet.service(TestServlet.java:26) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 關于此類的API詳看 http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html Java Servlet
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。