Servlet檔案上傳||@MultipartConfig標註屬性
Servlet3.0提供了對檔案上傳的支援,通過@MultipartConfig標註和HttpServletRequest的兩個新方法getPart()和getParts(),開發者能夠很容易實現檔案的上傳操作。
@MultipartConfig標註主要是為了輔助Servlet3.0中HttpServletRequest提供的對上傳檔案的支援。該標註寫在Servlet類的宣告之前,一表示該Servlet希望處理的請求時multipart/form-data型別的。另外,該標註還提供了若干屬性用於簡化對上傳檔案的處理。
@MultipartConfig標註屬性
fileSizeThershold int型 是(可選) 描述:當前資料量大於該值時,內容將被寫入檔案。
location String型 是(可選) 描述:存放生成檔案的地址
maxFileSize long型 是(可選) 描述:允許上傳的檔案最大值,預設為-1,表示沒有限制
maxRequestSize long型 是(可選) 描述:針對 multipart/form-data 請求的最大數量,預設為-1,表示沒有限制
<!--index.html檔案部分程式碼-->
<form action="/HelloWorld/UpLoad" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="upload" value="上傳">
</form>
/*UpLoad.java為上傳檔案的Servlet類*/ package javaee.servlet; import ………… //設定訪問活著呼叫這個Servlet的路徑 @WebServlet("/UpLoad") //說明該Servlet處理的是multipart/form-data型別的請求 @MultipartConfig public class UpLoad extends HttpServlet{ private static final long serialVersionUID = 1L; public UpLoad(){ super(); } protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ this.doPost(request, response); } protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ //說明輸入的請求資訊採用UTF-8編碼方式 request.setCharacterEncoding("utf-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); //Servlet3.0中新引入的方法,用來處理multipart/form-data型別編碼的表單 Part part = request.getPart("file"); //獲取HTTP頭資訊headerInfo=(form-data; name="file" filename="檔名") String headerInfo = part.getHeader("content-disposition"); //從HTTP頭資訊中獲取檔名fileName=(檔名) String fileName = headerInfo.substring(headerInfo.lastIndexOf("=") + 2, headerInfo.length() - 1); //獲得儲存上傳檔案的資料夾路徑 String fileSavingFolder = this.getServletContext().getRealPath("/UpLoad"); //獲得儲存上傳檔案的完整路徑(資料夾路徑+檔名) //資料夾位置固定,資料夾採用與上傳檔案的原始名字相同 String fileSavingPath = fileSavingFolder + File.separator + fileName; //如果儲存上傳檔案的資料夾不存在,則建立資料夾 File f = new File(fileSavingFolder + File.separator); if(!f.exists()){ f.mkdirs(); } //將上傳的檔案內容寫入伺服器檔案中 part.write(fileSavingPath); //輸出上傳成功資訊 out.println("檔案上傳成功~!"); } }
/DownLoadjava為下載檔案的Servlet類*/
package javaee.servlet;
import …………
@WebServlet("/DownLoad")
public class DownLoad extends HttpServlet{
private static final long serialVersionUID = 1L;
public DownLoad(){
super();
}
protected void doGet(HttpServletRequest request ,HttpServletResponse response)
throws ServletException,IOException{
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
try{
//伺服器相對路徑
String filepath = "WEB-INF/web.xml";
//伺服器絕對路徑
String fullFilePath = getServletContext().getRealPath(filepath);
System.out.println(fullFilePath);
/*開啟檔案,建立File型別的檔案物件*/
File file = new File(fullFilePath);
/*如果檔案存在*/
if(file.exists()){
System.out.println("檔案存在");
/*獲得檔名,並採用UTF-8編碼方式進行編碼,以解決中文問題*/
String filename = URLEncoder.encode(file.getName(), "UTF-8");
System.out.println(filename);
/*重置response物件*/
response.reset();
//設定檔案的型別,xml檔案採用text/xml型別,詳見MIME型別的說明
response.setContentType("text/xml");
//設定HTTP頭資訊中內容
response.addHeader("Content-Disposition","attachment:filename=\"" + filename + "\"" );
//設定檔案的長度
int fileLength = (int)file.length();
System.out.println(fileLength);
response.setContentLength(fileLength);
/*如果檔案長度大於0*/
if(fileLength!=0){
//建立輸入流
InputStream inStream = new FileInputStream(file);
byte[] buf = new byte[4096];
//建立輸出流
ServletOutputStream servletOS = response.getOutputStream();
int readLength;
//讀取檔案內容並寫到response的輸出流當中
while(((readLength = inStream.read(buf))!=-1)){
servletOS.write(buf, 0, readLength);
}
//關閉輸入流
inStream.close();
//重新整理輸出緩衝
servletOS.flush();
//關閉輸出流
servletOS.close();
}
}else {
System.out.println("檔案不存在~!");
PrintWriter out = response.getWriter();
out.println("檔案 \"" + fullFilePath + "\" 不存在");
}
}catch(Exception e){
System.out.println(e);
}
}
}
相關推薦
Servlet檔案上傳||@MultipartConfig標註屬性
在Servlet3.0之前,處理上傳檔案的操作一直是讓開發者頭疼的問題,因為Servlet本身沒有對此提供直接的支援,需要使用第三方框架來實現,而且使用起來也不夠簡單。Servlet3.0提供了對檔案上傳的支援,通過@MultipartConfig標註和HttpServle
·Servlet 檔案上傳 FileUpload
·實現以下程式碼前需要在專案中新增jar包commons-fileupload-1.2.1.jar 和其支援jar包commons-io-1.4.jar(即使用commons-fileupload-1.2.1.jar的前提是載入commons-io-1.4.jar) package c
Servlet檔案上傳(壓縮檔案、圖片等)
上傳檔案是指把客戶端的檔案傳送到伺服器端,當客戶端向伺服器上傳檔案時,客戶端傳送的HTTP請求正文采用“multipart/form-data”資料型別,它表示複雜的包含多個子部分的複合表單。比如,如下HTML程式碼中,就包含了普通的文字輸入框和兩個用於指定上傳檔案的檔案域。
Servlet檔案上傳之FileItem類的常用方法
1. boolean isFormField() isFormField方法用於判斷FileItem類物件封裝的資料是一個普通文字表單欄位,還是一個檔案表單欄位,如果是普通表單欄位則返回true,否則返回false。因此,可以使用該方法判斷是否為普通表單域,還是檔案上傳表
Servlet檔案上傳
兩點要素: 1.表單提交方式必須是post 2.enctype要指定為multipart/form-data。 enctype的預設值是application/x-www-form-urlencoded, 這種編碼格式
檔案上傳下載時,在form表單中設定屬性enctype=“multipart/form-data”的情況下,如何獲取表單提交的值?
一、問題描述 檔案上傳下載時,在form表單中設定屬性enctype=“multipart/form-data”的情況下,如何獲取表單提交的有關使用者資訊的值?(比如:textfield、radio等屬性中的值) 二、解決方法 1、情況一:沒有對user物件進行封裝 方法:
實際應用一:基於servlet和JavaScript FileReader實現簡單的檔案上傳
在web專案中檔案上傳是十分平常的,對於檔案上傳之前用過幾種方法都比較實用。 一、基於Apache common fileupload 二、基於servlet和JavaScript FileReader 三、框架裡自帶的檔案上傳 他們各自適用於不同的場合個人認為:
js+jstl+servlet實現檔案上傳、列表展示及檔案下載
檔案上傳 1.upload.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert
servlet實現檔案上傳
一、Servlet實現檔案上傳,需要新增第三方提供的jar包 下載地址: 1) commons-fileupload-1.2.2-bin.zip : 點選開啟連結
Servlet & JSP 檔案上傳
1.介紹: 檔案上傳是將客戶端的一個或多個檔案傳輸到伺服器上儲存。 2.客戶端要求: 實現檔案上傳首先需要在客戶端的HTML頁面中通過一個表單開啟一個檔案,然後提交給伺服器。上傳檔案表單的<form>標籤中應該指定enctype屬性,它的值應該為"multi
Java Servlet實現檔案上傳並讀取Zip壓縮包中檔案的真實型別
1.上傳檔案servlet PS: 使用ant.jar中的 org.apache.tools.zip.ZipEntry 物件,防止亂碼 package com.chenl.servlets; import java.io.File; import java.io.IOExcep
servlet組建上傳檔案
表單上傳,普通欄位和檔案都可以接收,返回檔案上傳後的路徑 public static String upload(HttpServletRequest request, HttpServletResponse response) throws ServletExcept
Servlet實現檔案上傳詳解與實戰
檔案上傳 1.客戶端程式設計 要上傳檔案,必須利用mutipart/form-data 設定HTML表單的enctype 屬性值 <form action="action" enctype="mutipart/form-data" method="po
servlet 3.0 檔案上傳下載
1.需求場景 利用servlet3.0 實現檔案上傳 2.專案環境 servlet jsp javabean 3.功能實現 package com.demo.action; import java.io.File; import java.io.IOExceptio
jsp+servlet和SSM分別是如何實現檔案上傳(示例)
以下是jsp+servlet和SSM分別是如何實現檔案上傳的方法示例 兩種模式的upload.jsp檔案都一樣,(注意要加上enctype=”multipart/form-data”)如下: <
servlet實現form表單的檔案上傳
注:該方法需要用到commons-fileupload-1.2.2.jar和commons-io-2.4.jar兩個包,自行下載。 首先,需要在form表單中設定enctype="multipart/form-data"屬性,就能實現檔案上傳,但是由於enctype="multipart/form-data
Jsp+Servlet實現檔案上傳下載——前臺頁面開發
JSP和Servlet都是J2EE的規範,JSP全名為Java Server Pages,中文名叫java伺服器頁面,它是在傳統的網頁HTML檔案中插入Java程式段(Scriptlet
jsp/servlet如何進行檔案上傳
檔案上傳 環境搭建 a) 導包: commons-fileupload-xxx.jar commons-io-xxx.jar b) 在jsp頁面配置
java/struts/Servlet檔案下載與ftp檔案上傳下載
String s1=transUrl; // transUrl是前臺接受的引數,get接受的引數tomcat一律使用iso-8859-1編碼 transUrl=new String(transUrl.getBytes("ISO-8859-1"),"utf-8");//程式中要使用的檔名,必須轉換為gbk
Servlet實現檔案上傳的幾種方法
1. 通過getInputStream()取得上傳檔案。 /** * To change this template, choose Tools | Templates * and open the template in the editor. */ package