JSP组件commons-fileupload实现文件上传
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下
1、准备:
将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到"\WEB-INF\lib"目录下
2、首先是Servlet:FileUpload.java
packageservlet;
importjava.io.File;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.*;
importjava.util.regex.Pattern;
importjava.util.regex.Matcher;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.commons.fileupload.FileItem;
importorg.apache.commons.fileupload.FileUploadException;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;
publicclassFileUploadextendsHttpServlet{
privateStringuploadPath="E:\\addnetFile\\";//要上传文件的目录
privateFiletempPath=newFile("E:\\tempFile\\");//存放上传的文件的目录
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=GB2312");
response.setCharacterEncoding("gb2312");
PrintWriterout=response.getWriter();
out.println("请求内容的长度为:"+request.getContentLength());
out.println("请求内容的类型为:"+request.getContentType());
DiskFileItemFactoryfactory=newDiskFileItemFactory();
factory.setRepository(tempPath);
factory.setSizeThreshold(4096);
ServletFileUploadupload=newServletFileUpload(factory);
upload.setSizeMax(1000000);
List<?>fileitems=null;
try{
fileitems=upload.parseRequest(request);
Iterator<?>iterator=fileitems.iterator();
Stringregex=".+\\\\(.+)$";
String[]errortype={".exe",".com",".cgi",".asp"};
Patternp=Pattern.compile(regex);
while(iterator.hasNext()){
FileItemitem=(FileItem)iterator.next();
if(!item.isFormField()){
Stringname=item.getName();
longsize=item.getSize();
if(name==null||name.equals("")&&size==0)
continue;
Matcherm=p.matcher(name);
if(m.find()){
for(inttemp=0;temp<errortype.length;temp++){
if(m.group(1).endsWith(errortype[temp]))
thrownewIOException(name+":wrongtype");
}
try{
item.write(newFile(tempPath,m.group(1)));
out.println(name+""+size+"<br/>");
out.println("上传成功");
}catch(Exceptione){
out.println("333"+e);
}
}
else{
thrownewIOException("failtoupload");
}
}
}
}catch(IOExceptione){
out.println("222"+e);
}
catch(FileUploadExceptione1){
e1.printStackTrace();
out.println("111"+e1);
}
}
publicvoidinit()throwsServletException{
if(!newFile(uploadPath).isDirectory())
newFile(uploadPath).mkdir();
if(!tempPath.isDirectory())
tempPath.mkdir();
}
publicvoiddestroy(){
super.destroy();
}
}
3、其次是html:Uploadfile.html
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <html> <head> <title>Uploadfilel.html</title> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="thisismypage"> <metahttp-equiv="content-type"content="text/html;charset=UTF-8"> <!--<linkrel="stylesheet"type="text/css"href="./styles.css">--> </head> <body> <formaction="/Firstjsp/servlet/FileUpload"method="post"enctype="multipart/form-data"name="form1"> <inputtype="file"name="file"/> <inputtype="submit"name="submit"value="upload"/> </form> <formaction="/Firstjsp/servlet/FileUpload"method="post"enctype="multipart/form-data"name="uploadform"> <table> <tr> <td> 文件1:<inputtype="file"name="X"size="40"/> </td> </tr> <tr> <td> 文件2:<inputtype="file"name="Y"size="40"/> </td> </tr> <tr> <td> 文件3:<inputtype="file"name="Z"size="40"/> </td> </tr> </table> <inputtype="submit"name="upload"value="开始上传"/> </form> </body> </html>
4、最后是配置web.xml
<servlet> <description>ThisisthedescriptionofmyJ2EEcomponent</description> <display-name>ThisisthedisplaynameofmyJ2EEcomponent</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>
首先运行html,servlet处理上传请求
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。