JSP組件commons-fileupload實(shí)現(xiàn)文件上傳
本文實(shí)例為大家分享了JSP使用commons-fileupload實(shí)現(xiàn)文件上傳代碼,供大家參考,具體內(nèi)容如下
1、準(zhǔn)備:
將commons-fileupload-1.1.zip和commons-io-1.1.zip復(fù)制到"\WEB-INF\lib"目錄下
2、首先是Servlet: FileUpload.java
package servlet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
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;
public class FileUpload extends HttpServlet {
private String uploadPath="E:\\addnetFile\\";//要上傳文件的目錄
private File tempPath=new File("E:\\tempFile\\");//存放上傳的文件的目錄
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GB2312");
response.setCharacterEncoding("gb2312");
PrintWriter out=response.getWriter();
out.println("請(qǐng)求內(nèi)容的長(zhǎng)度為:"+request.getContentLength());
out.println("請(qǐng)求內(nèi)容的類型為:"+request.getContentType());
DiskFileItemFactory factory=new DiskFileItemFactory();
factory.setRepository(tempPath);
factory.setSizeThreshold(4096);
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setSizeMax(1000000);
List<?> fileitems=null;
try{
fileitems=upload.parseRequest(request);
Iterator<?> iterator=fileitems.iterator();
String regex=".+\\\\(.+)$";
String[] errortype={".exe",".com",".cgi",".asp"};
Pattern p=Pattern.compile(regex);
while(iterator.hasNext()){
FileItem item=(FileItem) iterator.next();
if(!item.isFormField()){
String name=item.getName();
long size=item.getSize();
if(name==null||name.equals("")&&size==0)
continue;
Matcher m=p.matcher(name);
if(m.find()){
for(int temp=0;temp<errortype.length;temp++){
if(m.group(1).endsWith(errortype[temp]))
throw new IOException(name+":wrong type");
}
try{
item.write(new File(tempPath,m.group(1)));
out.println(name+" "+size+"<br/>");
out.println("上傳成功");
}catch(Exception e){
out.println("333"+e);
}
}
else{
throw new IOException("fail to upload");
}
}
}
}catch(IOException e){
out.println("222"+e);
}
catch(FileUploadException e1){
e1.printStackTrace();
out.println("111"+e1);
}
}
public void init() throws ServletException {
if(!new File(uploadPath).isDirectory())
new File(uploadPath).mkdir();
if(!tempPath.isDirectory())
tempPath.mkdir();
}
public void destroy(){
super.destroy();
}
}
3、其次是html:Uploadfile.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Uploadfilel.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <form action="/Firstjsp/servlet/FileUpload" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="file"/> <input type="submit" name="submit" value="upload"/> </form> <form action="/Firstjsp/servlet/FileUpload" method="post" enctype="multipart/form-data" name="uploadform"> <table> <tr> <td> 文件1:<input type="file" name="X" size="40"/> </td> </tr> <tr> <td> 文件2:<input type="file" name="Y" size="40"/> </td> </tr> <tr> <td> 文件3:<input type="file" name="Z" size="40"/> </td> </tr> </table> <input type="submit" name="upload" value="開(kāi)始上傳"/> </form> </body> </html>
4、最后是配置web.xml
<servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>FileUpload</servlet-name> <servlet-class>servlet.FileUpload</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileUpload</servlet-name> <url-pattern>/servlet/FileUpload</url-pattern>
首先運(yùn)行html,servlet處理上傳請(qǐng)求
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Apache commons fileupload文件上傳實(shí)例講解
- java組件commons-fileupload實(shí)現(xiàn)文件上傳、下載、在線打開(kāi)
- Java組件commons fileupload實(shí)現(xiàn)文件上傳功能
- JavaEE組件commons-fileupload實(shí)現(xiàn)文件上傳、下載
- java組件commons-fileupload文件上傳示例
- Apache Commons fileUpload文件上傳多個(gè)示例分享
- java組件commons-fileupload實(shí)現(xiàn)文件上傳
- commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼
- java組件fileupload文件上傳demo
- java使用common-fileupload實(shí)現(xiàn)文件上傳
相關(guān)文章
JSP向后臺(tái)傳遞參數(shù)的四種方式總結(jié)
下面小編就為大家?guī)?lái)一篇JSP向后臺(tái)傳遞參數(shù)的四種方式總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
JSP對(duì)瀏覽器發(fā)送來(lái)的數(shù)據(jù)進(jìn)行重新編碼的兩種方式
使用JSP操作中文時(shí),經(jīng)常會(huì)出現(xiàn)一些亂碼問(wèn)題。這里,我們只談一下對(duì)瀏覽器發(fā)送來(lái)的數(shù)據(jù)進(jìn)行重新編碼時(shí)的編碼方式。眾所周知,要對(duì)瀏覽器發(fā)送來(lái)的數(shù)據(jù)進(jìn)行重新編碼,只需要一個(gè)語(yǔ)句就可以了,很簡(jiǎn)單2013-09-09
JSP 動(dòng)態(tài)樹(shù)的實(shí)現(xiàn)
在實(shí)際的項(xiàng)目開(kāi)發(fā)中有很多是有用到動(dòng)態(tài)樹(shù),所謂的動(dòng)態(tài)樹(shù)就是可以支持無(wú)限級(jí)子節(jié)點(diǎn)。今天我就去給大家實(shí)際演示一下動(dòng)態(tài)樹(shù)如何實(shí)現(xiàn)。2009-04-04
通過(guò)spring用beanshell實(shí)現(xiàn)java接口示例
這篇文章主要介紹了通過(guò)spring用beanshell實(shí)現(xiàn)java接口示例,需要的朋友可以參考下2014-03-03
jsp學(xué)習(xí)之scriptlet的使用方法詳解
這篇文章主要介紹了jsp學(xué)習(xí)之scriptlet的使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

