`

JAVA学习提高之---- FileUpload组件实现多文件上传(JSP+SERVLET)实现

阅读更多

引用:
http://luoke920.iteye.com/blog/271257

相关文章也可以看一下:
http://www.jspcn.net/htmlnews/2005011.html
http://www.jspcn.net/htmlnews/2005024.html
http://www.jspcn.net/htmlnews/20050115.html
一文中使用FileUpload组件实现多文件的上传。。。
经个人测试,组件本身使用上没有问题,不过因为考虑客户端和服务器有可能是linux主机的原因,在具体调用方面我做了一些改进。。。
本教程以Apache组织的commons项目中的FileUpload项目做为jsp的文件上传组件,FileUpload项目完全尊守RFC1867规范中
关于在HTTP request 中通过Post方法提交文件的规范,该项目性能稳定快速,易于部署和使用.
本次教程以前端jsp + 后端 servlet的方式上传文件,你也可以完全在jsp中实现而不用servlet.
在开始之前你要准备以下几个东西:
1. commons-FileUpload 1.2.1 包
下载地址:http://jakarta.apache.org/commons/fileupload/
具体地址:http://commons.apache.org/downloads/download_fileupload.cgi
下载Binary下的zip即可。
2. commons-IO 1.4 包
下载地址:http://jakarta.apache.org/commons/io/
具体地址:http://commons.apache.org/downloads/download_io.cgi
下载Binary下的zip即可。
3. Commons-BeanUtils 1.8 包
下载地址:http://jakarta.apache.org/commons/beanutils/
具体地址:http://commons.apache.org/downloads/download_beanutils.cgi
下载Binary下的zip即可。
好了下载完成后,解压得到5个jar包:分别是:
commons-beanutils-1.8.0.jar
commons-beanutils-bean-collections-1.8.0.jar
commons-beanutils-core-1.8.0.jar
commons-fileupload-1.2.1.jar
commons-io-1.4.jar

配置好开发环境后:如果没配置好可以看:
http://blog.csdn.net/luweifeng1983/archive/2008/12/23/3590726.aspx
用的是Eclipse3.4 + tomcat5.5并已有tomcat插件一起的。(jdk1.3或1.5的都可,已测试)
新建一个项目名叫Upload
建立好后将类文件输出目录改为:Upload/WebContent/WEB-INF/classes
接下来将上面5个jar包拷贝到WEB-INF/lib目录。。
!!说到这里要注意一个问题,那就是lib下的jar文件和eclipse工程下的jar放置的区别,一般你要使用你的代码拷到别的电脑上也能运行就把所有的jar都先拷到lib下,然后在eclipse的build path下点add jars将lib中的jar加进来就行了。。
下面就分别建一个jsp和一个servlet。。
如下:upload.jsp

  1. <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
  7. <title>Inserttitlehere</title>
  8. </head>
  9. <body>
  10. <formname="upform"action="UploadServlet"method="POST"enctype="multipart/form-data">
  11. <inputtype="file"name="file1"id="file1"/><br/>
  12. <inputtype="file"name="file2"id="file2"/><br/>
  13. <inputtype="file"name="file3"id="file3"/><br/>
  14. <inputtype="submit"value="Submit"/><br/>
  15. <inputtype="reset"/>
  16. </form>
  17. </body>
  18. </html>

UploadServlet.java

  1. packagecom.gobusiness.eus.servlet;
  2. importjava.io.BufferedInputStream;
  3. importjava.io.BufferedOutputStream;
  4. importjava.io.File;
  5. importjava.io.FileOutputStream;
  6. importjava.io.IOException;
  7. importjavax.servlet.ServletException;
  8. importjavax.servlet.http.HttpServletRequest;
  9. importjavax.servlet.http.HttpServletResponse;
  10. importorg.apache.commons.fileupload.FileItemIterator;
  11. importorg.apache.commons.fileupload.FileItemStream;
  12. importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
  13. importorg.apache.commons.fileupload.servlet.ServletFileUpload;
  14. importorg.apache.commons.fileupload.util.Streams;
  15. /**
  16. *ServletimplementationclassforServlet:UploadServlet
  17. *
  18. */
  19. publicclassUploadServletextendsjavax.servlet.http.HttpServletimplements
  20. javax.servlet.Servlet{
  21. FiletmpDir=null;//初始化上传文件的临时存放目录
  22. FilesaveDir=null;//初始化上传文件后的保存目录
  23. publicUploadServlet(){
  24. super();
  25. }
  26. protectedvoiddoGet(HttpServletRequestrequest,
  27. HttpServletResponseresponse)throwsServletException,IOException{
  28. doPost(request,response);
  29. }
  30. protectedvoiddoPost(HttpServletRequestrequest,
  31. HttpServletResponseresponse)throwsServletException,IOException{
  32. try{
  33. if(ServletFileUpload.isMultipartContent(request)){
  34. DiskFileItemFactorydff=newDiskFileItemFactory();//创建该对象
  35. dff.setRepository(tmpDir);//指定上传文件的临时目录
  36. dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte
  37. ServletFileUploadsfu=newServletFileUpload(dff);//创建该对象
  38. sfu.setFileSizeMax(5000000);//指定单个上传文件的最大尺寸
  39. sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸
  40. FileItemIteratorfii=sfu.getItemIterator(request);//解析request
  41. //请求,并返回FileItemIterator集合
  42. while(fii.hasNext()){
  43. FileItemStreamfis=fii.next();//从集合中获得一个文件流
  44. if(!fis.isFormField()&&fis.getName().length()>0){//过滤掉表单中非文件域
  45. StringfileName=fis.getName().substring(
  46. fis.getName().lastIndexOf("\\"));//获得上传文件的文件名
  47. BufferedInputStreamin=newBufferedInputStream(fis
  48. .openStream());//获得文件输入流
  49. BufferedOutputStreamout=newBufferedOutputStream(
  50. newFileOutputStream(newFile(saveDir
  51. +fileName)));//获得文件输出流
  52. Streams.copy(in,out,true);//开始把文件写到你指定的上传文件夹
  53. }
  54. }
  55. response.getWriter().println("Fileuploadsuccessfully!!!");//终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗
  56. }
  57. }catch(Exceptione){
  58. e.printStackTrace();
  59. }
  60. }
  61. publicvoidinit()throwsServletException{
  62. /*对上传文件夹和临时文件夹进行初始化*/
  63. super.init();
  64. StringtmpPath="c:\\tmpdir";
  65. StringsavePath="c:\\updir";
  66. tmpDir=newFile(tmpPath);
  67. saveDir=newFile(savePath);
  68. if(!tmpDir.isDirectory())
  69. tmpDir.mkdir();
  70. if(!saveDir.isDirectory())
  71. saveDir.mkdir();
  72. }
  73. }

web.xml

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appid="WebApp_ID"version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  3. <display-name>
  4. Upload</display-name>
  5. <servlet>
  6. <description>
  7. </description>
  8. <display-name>
  9. UploadServlet</display-name>
  10. <servlet-name>UploadServlet</servlet-name>
  11. <servlet-class>
  12. com.gobusiness.eus.servlet.UploadServlet</servlet-class>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>UploadServlet</servlet-name>
  16. <url-pattern>/UploadServlet</url-pattern>
  17. </servlet-mapping>
  18. <welcome-file-list>
  19. <welcome-file>index.html</welcome-file>
  20. <welcome-file>index.htm</welcome-file>
  21. <welcome-file>index.jsp</welcome-file>
  22. <welcome-file>default.html</welcome-file>
  23. <welcome-file>default.htm</welcome-file>
  24. <welcome-file>default.jsp</welcome-file>
  25. </welcome-file-list>
  26. </web-app>


好了,文件建立好后,在eclipse下直接部署再启动Tomcat访问upload.jsp再上传文件(这里可以一次上传三个文件),当然可以使用js实现提交更多的文件上传。。。
当然你也可以把你的upload项目整个拷贝到tomcat的webapps目录下,启动tomcat.然后
打开IE浏览器在地址栏中输入http://localhost:8080/upload/upload.jsp
如:我要上传的文件位于:D:\import file下,文件名分别为:
CNIL0437.TXT
GIDL0437.TXT
MSGL0437.TXT
上传成功后,这三个文件将被上传到了c:\updir下面。。。,如果在c:\updir下面找到了这三个文件说明上传已经成功了。。

好了,上面的步骤其实
http://luoke920.iteye.com/blog/271257已经讲得详细了,只是我把自己的部署、测试加进去了而以。那么我现在要对它进行一些改进。。。
首先第一:

  1. #publicvoidinit()throwsServletException{
  2. #/*对上传文件夹和临时文件夹进行初始化*/
  3. #super.init();
  4. #StringtmpPath="c:\\tmpdir";
  5. #StringsavePath="c:\\updir";
  6. #tmpDir=newFile(tmpPath);
  7. #saveDir=newFile(savePath);
  8. #if(!tmpDir.isDirectory())
  9. #tmpDir.mkdir();
  10. #if(!saveDir.isDirectory())
  11. #saveDir.mkdir();
  12. #
  13. #}

即它创建tempdir和updir是在servlet的init方法里面创建的,我们知道init方法只在servlet第一次被加载的时候执行,那么第一次创建成功后,如果后来的程序对这个目录做了修改或删除,那么从些以后就再也不能创建这两个目录了。。。
所以对创建目录的工作应该放到post方法里面。。。

第二:我们应该注意到程序在服务器上创建目录然后把文件上传到这两个目录(先放到temdir再到updir),如果我的服务器是linux主机怎么办,能用?

  1. 1.StringtmpPath="c:\\tmpdir";
  2. 2.StringsavePath="c:\\updir";

显然不能,所以创建目录时要使用File.separator.
不过如果实在不想用File.separaotr,至少也要用/updir,而不是使用\\,因为\\在linux下是肯定没用的。。

第三:下面语句用于获取上传文件的文件名,即D:\import file\CNIL0437.TXT,也就是说要获得CNIL0437.TXT

  1. StringfileName=fis.getName().substring(
  2. fis.getName().lastIndexOf("\\"));//获得上传文件的文件名

但上面的语句实际上只针对window客户端才有用,因为实际上上面的语句如果客户端使用的是window系统,上传文件时fis.getName()返回的是D:\\import file\\CNIL0437.TXT
而这里也有一个要注意的地方就是即使在windows的客户端得到的fileName也是\CNIL0437.TXT而不是CNIL0437.TXT,这里因为
举例:"abchang".substring(2) = "chang".也就是substring(n)实际上是取第n+1到最后的字符。。所以这里应该改为

  1. StringfileName=fis.getName().substring(
  2. fis.getName().lastIndexOf("\\")+1);//获得上传文件的文件名,客户端为windows
  3. if(fis.getName().lastIndexOf("\\") == -1){
  4. fileName=fis.getName().substring(
  5. fis.getName().lastIndexOf("/")+1);//获得上传文件的文件名,客户端为linux或unix
  6. }

上面lastIndexOf当找不到“\\”时默认返回值为-1

第四:下面语句

  1. BufferedOutputStreamout=newBufferedOutputStream(
  2. newFileOutputStream(newFile(saveDir
  3. +fileName)));//获得文件输出流

上面saveDir是一个File的实例,而更奇怪的是这个程序确实可以运行,说实话我现在没有明白这个语句编译器没有报错:newFile(saveDir +fileName)
因为File的构造函数中好象没有File(File+ String) 这么的构造函数。。这个问题??保留。。有看到这个问题并知道的可以解释一下。。。

  1. 上面提到的问题已解决了
  2. 这里使用的+号运算符实际上相当于saveDir.toString+String

jdk api:中只有new File(File,String)构造函数,经测试这里使用:new File(saveDir,fileName)也可以。
这里同样有使用File.separator的问题:这里因为上面取得的fileName是\CNIL0437.TXT,而我改正后的是CNIL0437.TXT。。所以这里也必须改。。
改正后为:

  1. newFileOutputStream(newFile(savePath+File.separator+fileName)));//获得文件输出流

注意我改成了savePath 因为savePath 是String类型的。。
好了这个程序到这里改得基本差不多了。。。

  1. 注:
  2. 这个程序里,我的上传文件的目录名和文件名都用的是英文,但实际当中可能使用中文名称,特别是文件名是中文的情况,经测试程序当文件名和目录名中有中文时获得的是乱码,这个问题有待解决,此贴名称前面加“!”以示待改进!
  1. 2008-12-26:
  2. 修正bug:当上传的文件目录或文件名为中文时提交过后用fis.getName()得到的是乱码
  3. 如:C:\DocumentsandSettings\zqwf\桌面\华为面试题.txt
  4. 如果不做任何处理理到的将是:
  5. C:\DocumentsandSettings\zqwf\妗岄潰\鍗庝负闈㈣瘯棰�.txt
  6. 在网上看了一些有关上传文件时乱码的问题,也看了FileUpload组件的相关源代码,但后来认为不需要对源码做修改。。。。
  7. 再看我前面的一篇博文:http://blog.csdn.net/luweifeng1983/archive/2008/11/20/3342003.aspx
  8. 提到post提交的乱码处理方法直接在servlet中添加
  9. request.setCharacterEncoding("UTF-8");即可解决问题

下面看看我实际应用的环境:
服务器:jboss3.2.0
eclipse 1.3.1
服务器:windows和linux都有,正因为这个所以上面改进了一些地方,总结起来就是在new File的时候里面应该使用File.separator,但在外面普通字符串来写目录的时候一般不要使用。。。
另外一般把目录写成相对目录,然后保存在属性文件中,注意的是:服务器不同,这两个属性文件配置的目录也有些不同。。好了看我下面的实现
sys.properties文件
windows服务器
  1. path.install=c:\\GeTSmart
  2. path.web.app=../jboss-3.2.0/server/minimal/deploy/GeTSmart.war/WEB-INF
  3. path.doc.ie.imp=./csv
  4. path.doc.ie.imp.temp=./tmpdir
linux服务器下只需改成以下就可以了。
  1. path.install=/usr/local/getseus
  2. path.web.app=../jboss-3.2.1/server/minimal/deploy/GeTSmart.war/WEB-INF
  3. path.doc.ie.imp=./csv
  4. path.doc.ie.imp.temp=./tmpdir
下面看我的servlet代码:
  1. try{
  2. StringtmpPath=EusUtil.getFullPath(SysProp.getProperty("path.doc.ie.imp.temp"));
  3. //StringtmpPath="c:\\tmpdir";
  4. StringsavePath=EusUtil.getFullPath(SysProp.getProperty("path.doc.ie.imp"));
  5. //StringsavePath="c:\\updir";
  6. tmpDir=newFile(tmpPath);
  7. saveDir=newFile(savePath);
  8. if(!tmpDir.isDirectory())
  9. tmpDir.mkdir();
  10. if(!saveDir.isDirectory())
  11. saveDir.mkdir();
  12. Logger.logDebug(className,"thesavePathdirnameis:"+savePath);
  13. StringuserId=userBean.getUserId();
  14. savePath=savePath+File.separator+userId;
  15. saveDir=newFile(savePath);
  16. if(!saveDir.isDirectory())
  17. saveDir.mkdir();
  18. Logger.logDebug(className,"thesavePathdirandtheuseridnameis:"+savePath);
  19. if(ServletFileUpload.isMultipartContent(req)){
  20. DiskFileItemFactorydff=newDiskFileItemFactory();//创建该对象
  21. dff.setRepository(tmpDir);//指定上传文件的临时目录
  22. dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte
  23. ServletFileUploadsfu=newServletFileUpload(dff);//创建该对象
  24. sfu.setFileSizeMax(5000000);//指定单个上传文件的最大尺寸
  25. sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸
  26. FileItemIteratorfii=sfu.getItemIterator(req);//解析request
  27. //请求,并返回FileItemIterator集合
  28. while(fii.hasNext()){
  29. FileItemStreamfis=fii.next();//从集合中获得一个文件流
  30. if(!fis.isFormField()&&fis.getName().length()>0){//过滤掉表单中非文件域
  31. StringfileName=fis.getName().substring(
  32. fis.getName().lastIndexOf("\\")+1);//获得上传文件的文件名,客户端为windows
  33. if(fis.getName().lastIndexOf("\\")<0){
  34. fileName=fis.getName().substring(
  35. fis.getName().lastIndexOf("/")+1);//获得上传文件的文件名,客户端为linux或unix
  36. }
  37. //fis.getName().lastIndexOf(File.separator)+1);//获得上传文件的文件名
  38. Logger.logDebug(className,"gettheFile.separatoris:"+File.separator);
  39. Logger.logDebug(className,"gettheclientimportfilepathis<<fis.getName()>>:"+fis.getName());
  40. Logger.logDebug(className,"gettheclientimportfilepathlastindexof\\+1is<<fis.getName()indexof>>:"+(fis.getName().lastIndexOf("\\")+1));
  41. Logger.logDebug(className,"gettheimportfilenameis:"+fileName);
  42. BufferedInputStreamin=newBufferedInputStream(fis
  43. .openStream());//获得文件输入流
  44. BufferedOutputStreamout=newBufferedOutputStream(
  45. //newFileOutputStream(newFile(saveDir+fileName)));//获得文件输出流
  46. newFileOutputStream(newFile(savePath+File.separator+fileName)));//获得文件输出流
  47. Logger.logDebug(className,"gettheoutputStreamfilepathis<<newFile(savePath+File.separator+fileName)>>"+savePath+File.separator+fileName);
  48. Streams.copy(in,out,true);//开始把文件写到你指定的上传文件夹
  49. }
  50. }
  51. //resp.getWriter().println("Fileuploadsuccessfully!!!");//终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗
上面用到的方法:getFullPath
  1. publicstaticStringgetFullPath(Stringpath){
  2. //getinstallpath
  3. StringsInstallPath=CommonUtil.null2String(SysProp.getProperty("path.install"));
  4. StringsWebAppPath=CommonUtil.null2String(SysProp.getProperty("path.web.app"));
  5. if(path.trim().substring(0,2).equals("..")){
  6. returnreplaceNameSeparator(sInstallPath+path.trim().substring(2));
  7. }
  8. elseif(path.trim().charAt(0)=='.'){
  9. if(sWebAppPath.trim().substring(0,2).equals(".."))
  10. returnreplaceNameSeparator(sInstallPath+sWebAppPath.trim().substring(2)+path.trim().substring(1));
  11. else
  12. returnreplaceNameSeparator(sWebAppPath+path.trim().substring(1));
  13. }else{
  14. returnreplaceNameSeparator(path.trim());
  15. }
  16. }

  1. publicstaticStringreplaceNameSeparator(Stringpath)
  2. {
  3. StringnewString="";
  4. if(path.indexOf('/')!=-1)
  5. newString=path.replace('/',File.separatorChar);
  6. else
  7. newString=path;
  8. if(newString.indexOf('\\')!=-1)
  9. newString=newString.replace('\\',File.separatorChar);
  10. returnnewString;
  11. }
主要注意我提到的几个要改的地方就行了。。其实就是要考虑当客户端和服务器都可能是windows和linux的情况。
说大了就是编程要注意细节,要尽量去完善代码。。。这样才能使代码不会因环境变化一下就不能运行。。。。


前面讲过可以实现更多文件上传,这里只需要改一下jsp页面就行了,改进后的代码如下:
upload.jsp
  1. <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
  7. <title>Inserttitlehere</title>
  8. <script>
  9. varfile_to=0;
  10. functionadd_inp()
  11. {
  12. newInp=document.createElement("input");
  13. newInp.setAttribute("id","file_"+file_to);
  14. newInp.setAttribute("type","file");
  15. newInp.setAttribute("name","upfile");
  16. div1.appendChild(newInp);
  17. newInp=document.createElement('<inputtype="button"value="删除"onclick="del_inp('+file_to+')">');
  18. newInp.setAttribute("id","file_del_"+file_to);
  19. div1.appendChild(newInp);
  20. newInp=document.createElement('<BR/>');
  21. newInp.setAttribute("id","file_br_"+file_to);
  22. div1.appendChild(newInp);
  23. file_to++;
  24. }
  25. functiondel_inp(file_id)
  26. {
  27. div1.removeChild(document.getElementById("file_"+file_id));
  28. div1.removeChild(document.getElementById("file_del_"+file_id));
  29. div1.removeChild(document.getElementById("file_br_"+file_id));
  30. }
  31. </script>
  32. </head>
  33. <body>
  34. <formname="upform"action="UploadServlet"method="POST"enctype="multipart/form-data">
  35. <divid=div1>
  36. </div>
  37. <INPUTTYPE="button"VALUE="添加上传文件"onclick=add_inp()>
  38. <inputtype="submit"value="Submit"/>
  39. <inputtype="reset"/>
  40. </form>
  41. </body>
  42. </html>

最近查看fileupload的api的时候发现有另一种迭代及写文件的方式如下:
  1. protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
  2. Stringstep="";
  3. FiletempDir=null;
  4. FilesaveDir=null;
  5. try{
  6. request.setCharacterEncoding("UTF-8");
  7. step="uploadfiletoc:/updir";
  8. StringtempPath="c:/tempdir";
  9. StringsavePath="c:/updir";
  10. tempDir=ImportManager.mkdir(tempPath);
  11. saveDir=ImportManager.mkdir(savePath);
  12. intmaxMemorySize=1024*1024*1024;
  13. intMaxSize=100*1024*1024;
  14. if(ServletFileUpload.isMultipartContent(request)){
  15. DiskFileItemFactoryfactory=newDiskFileItemFactory();
  16. factory.setSizeThreshold(maxMemorySize);
  17. factory.setRepository(tempDir);
  18. ServletFileUploadupload=newServletFileUpload(factory);
  19. upload.setSizeMax(MaxSize);
  20. Listitems=upload.parseRequest(request);
  21. Iteratoriter=items.iterator();
  22. while(iter.hasNext()){
  23. FileItemitem=(FileItem)iter.next();
  24. if(!item.isFormField()){
  25. //item.isFormField()返回为ture时为其它的表单域如submit等,为false时才为上传的文件
  26. StringfieldName=item.getFieldName();
  27. Stringvalue=item.getString();
  28. StringfileName=item.getName();
  29. StringcontentType=item.getContentType();
  30. booleanisInMemory=item.isInMemory();
  31. longsizeInbytes=item.getSize();
  32. //取上传的文件名
  33. if(fileName.lastIndexOf("\\")!=-1){
  34. fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
  35. }else{
  36. fileName=fileName.substring(fileName.lastIndexOf("/")+1);
  37. }
  38. //保存文件到指定目录
  39. item.write(newFile(saveDir+File.separator+fileName));
  40. //BufferedInputStreamis=newBufferedInputStream(item.getInputStream());
  41. //BufferedOutputStreamos=newBufferedOutputStream(newFileOutputStream(newFile(savePath+File.separator+fileName)));
  42. //Streams.copy(is,os,true);
  43. }
  44. }
  45. }
  46. }catch(Exceptione){
  47. }finally{
  48. request.getRequestDispatcher("AckMessage.jsp").forward(request,response);
  49. }
  50. }
上面主要是
ServletFileUpload 类提供了返回List的方法parseRequest,而前面的例子使用的是该类返回FileItemIteratorgetItemIterator方法

分享到:
评论

相关推荐

    java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    在Java Web开发中,文件的上传与下载是常见的功能需求,尤其...通过以上步骤,你可以实现基于Java Servlet和Apache Commons库的文件上传与下载功能。理解并熟练掌握这些知识点,对于开发高效、稳定的Web应用至关重要。

    jsp+servlet+fileupload文件上传

    "jsp+servlet+fileupload文件上传" 这个标题表明这是一个关于使用Java Web技术进行文件上传的教程。JSP (JavaServer Pages) 是一种动态网页技术,Servlet是Java EE中的一个核心组件,常用于处理HTTP请求。FileUpload...

    fileUpload组件所需jar包

    在JSP应用中,我们通常会结合Servlet来实现文件上传,因为JSP本身不支持处理文件上传的POST请求。 1. **添加依赖**:在使用FileUpload组件之前,需要将其jar包引入到项目中。提供的压缩包文件"fileupload"很可能...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    jsp+servlet实现文件上传和下载

    在这个主题中,“jsp+servlet实现文件上传和下载”是核心知识点,我们将深入探讨如何利用这两个组件以及Apache的`commons-fileupload`和`commons-io`库来完成这一任务。 1. **文件上传** 文件上传通常涉及用户通过...

    Common-fileupload组件实现文件上传.pdf

    ### Common-fileupload组件实现文件上传 #### 一、概述 在现代Web开发中,文件上传是一项常见的需求。尤其是在Java Web应用程序中,实现文件上传功能变得越来越简单,这得益于丰富的开源库支持。Common-fileupload...

    jsp+servlet实现图片上传

    在本文中,我们将深入探讨如何使用Java的JSP(JavaServer Pages)和Servlet技术来实现一个图片上传功能。这是一个常见的Web开发任务,特别是在构建交互性强、动态内容丰富的网站时。以下是一些关键知识点: 1. **...

    servlet+jsp文件上传示例

    以下是使用Servlet和JSP实现文件上传的基本步骤: 1. **配置依赖**:在项目中添加Apache Commons FileUpload和IO库。这两个库可以通过Maven或Gradle等构建工具导入,或者手动下载jar文件并添加到项目的类路径中。 ...

    jsp+servlet文件上传,非apache组件

    总的来说,虽然不使用Apache的FileUpload组件,但通过JSP和Servlet,我们可以自定义实现文件上传功能。这种方法虽然更复杂,但能让我们更好地理解文件上传的底层原理,并且在某些情况下,如对性能有特殊要求或避免...

    完整的Jsp+Servlet+SmartUpload工程实例

    它支持多文件上传、断点续传、文件大小限制等功能,可以有效避免传统FileUpload类的复杂性。 **4. 文件上传流程** 使用SmartUpload进行文件上传的步骤大致如下: - 在Servlet中实例化SmartUpload对象。 - 调用...

    利用commons-fileupload上传组件上传文件(一)

    在本文中,我们将深入探讨如何使用Apache Commons FileUpload组件来实现文件上传功能。Apache Commons FileUpload是一个用于处理HTTP请求中的多部分数据的Java库,它使得在Servlet或JSP应用中处理文件上传变得简单易...

    上传下载仿163网盘无刷新文件上传 for Jsp-fileupload-jsp-project

    【标题】"上传下载仿163网盘无刷新文件上传 for Jsp-fileupload-jsp-project" 提供了一个实现无刷新文件上传的示例,它基于Java技术,特别是JSP和Servlet,以及Apache的FileUpload组件。这个项目旨在创建一个类似于...

    commons-fileupload实现jsp上传实例(源码)

    "commons-fileupload实现jsp上传实例(源码)" 这个标题表明了我们讨论的主题是关于使用Apache Commons FileUpload库在JavaServer Pages (JSP)中实现文件上传的功能,并且提供了源代码作为参考。Apache Commons ...

    commons-fileupload组件上传问题

    在IT行业中,文件上传是Web应用中常见的功能之一,Apache Commons FileUpload组件是Java领域处理文件上传的标准库。本文将详细解析"commons-fileupload组件上传问题",并结合提供的资源来探讨如何解决这类问题。 ...

    commons-fileupload和smartupload实现文件上传

    在上述例子中,我们看到了使用Commons FileUpload实现文件上传的步骤: 1. 创建上传页面:HTML表单使用`enctype="multipart/form-data"`属性,指定上传文件的类型。在`&lt;input type="file"&gt;`标签中,用户可以选择要...

    JSP+servlet文件上传

    本教程将详细讲解如何使用JSP和Servlet实现文件上传,以及相关的知识点。 一、JSP与Servlet基础 1. JSP:是一种动态网页技术,它允许在HTML页面中嵌入Java代码,使得页面具有动态性。服务器接收到客户端请求后,会...

    文件上传下载【jsp+servlet】

    总的来说,这个项目展示了如何利用JSP和Servlet来实现一个基本的文件上传下载系统,涵盖了Web开发中的基础技术,对于学习Java Web开发的初学者来说,是一个很好的实践案例。在实际应用中,还可以进一步优化,如增加...

    struts+上传下载+servlet+jsp

    在这个“struts+上传下载+servlet+jsp”项目中,我们将探讨这些技术如何协同工作以实现文件的上传和下载功能。 **Struts框架**: Struts是一个开源的MVC框架,它简化了Java Web应用的开发过程。在Struts中,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

Global site tag (gtag.js) - Google Analytics