1.进行文件上传时,表单需要做的准备:
1).请求方式为POST:<form action="uploadServlet" method="post"....>
2).使用file的表单域:<input type="file" name="file" />
3).请求的编码方式:<form action="uploadServlet" method="post" enctype="multipart/form-data">
表单以二进制传输数据

<form action="uploadServlet" method="post" enctype="multipart/form-data">File:<input type="file" name="file"     /><br><input type="submit"    value="Submit"/>
</form>

2.服务端:
1).不能再使用request.getParameter()等方式获取请求信息。获取不到,因为请求的编码方式已经改为multipart/form-data,
以二进制的方式来提交请求信息。
2).可以使用输入流的方式来获取。但不建议这样做。
3).具体使用commons-fileupload组件来完成文件的上传操作。
搭建环境:
①.加入commons-fileupload-1.3.3.jar
commons-io-2.6.jar
②.基本思想:
*commons-fileupload 可以解析请求,得到一个FileItem对象组成的List
*commons-fileupload 把所有的请求信息都解析为FileItem对象,无论是一个一般的文本域还是一个文件域。
*可以调用FileItem的isFormField()方法来判断是一个表单域或不是表单域(则是一个文件域)
*再来进一步获取信息

 if (item.isFormField()) {String name = item.getFieldName();String value = item.getString();...}

如果是一个多选,如何获取对应的字符串数组:每一个都对应一个FileItem对象。

 <input type="checkbox" name="interesting" value="Reading"/>Reading<input type="checkbox" name="interesting" value="Party"/>Party<input type="checkbox" name="interesting" value="Shopping"/>Shopping    
if (!item.isFormField()) {String fieldName = item.getFieldName();String fileName = item.getName();String contentType = item.getContentType();boolean isInMemory = item.isInMemory();long sizeInBytes = item.getSize();InputStream uploadedStream = item.getInputStream();...uploadedStream.close();}

③.如何得到List<FileItem>对象
>简单的方式

// Create a factory for disk-based file itemsDiskFileItemFactory factory = new DiskFileItemFactory();// Configure a repository (to ensure a secure temp location is used)ServletContext servletContext = this.getServletConfig().getServletContext();File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");factory.setRepository(repository);// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Parse the requestList<FileItem> items = upload.parseRequest(request);  

>复杂的方式:可以为文件的上传加入一些限制条件和其他的属性。

 // Create a factory for disk-based file itemsDiskFileItemFactory factory = new DiskFileItemFactory();//设置内存中最多可以存放的上传文件的大小,若超出则把文件写到一个临时文件夹中。以byte为单位factory.setSizeThreshold(yourMaxMemorySize);//设置那个临时文件夹factory.setRepository(yourTempDirectory);// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// 设置上传的文件的总的大小。也可以设置单个文件的大小。upload.setSizeMax(yourMaxRequestSize);// Parse the requestList<FileItem> items = upload.parseRequest(request);

3.使用fileupload组件完成文件的上传应用
1).需求:
①.上传
>在upload.jsp页面上使用jQuery实现“新增一个附件”,“删除附件”。但至少需要保留一个
>对文件的扩展名和文件的大小进行验证,一下的规则是可配置的,而不是写死在程序中的
>>文件的扩展名必须为.pptx,docx,doc
>>每个文件的大小不能超过1M
>>总的文件大小不能超过5M。
>若验证失败,则在upload.jsp页面上显示错误消息:
>>若某一个文件不符合要求:xxx文件拓展名不合法或xxx文件大小超过1M
>>总的文件大小不能超过5M
>若验证通过,则进行文件的上传操作
>>文件上传,并给一个不能和其他文件重复的名字,但拓展名不变
>>在对应的数据表中添加一条记录。

 <script type="text/javascript">    $(function () {//1.获取#addFile,并为其添加click响应函数var i=2;$("#addFile").click(function () {//2.利用jQuery生存城一下节点,注意数字的变化,并把他们放在#br的前面//其中“删除”按钮可以删除当前的file和desc相关节点/*File1:<input type="file" name="file1"     /><br>Desc1:<input type="text" name="desc1" /><button>删除</button><br>*/$("#br").before("<div>File"+i+":<input type='file' name='file"+i+"'/><br>Desc"+i+":<input type='text' name='desc"+i+"'/><input type='button' value='删除' id='button' /><br><br></div>").prev("div").find("#button").click(function(){$(this).parent("div").remove();i--;});i++;});});
</script>     

4.如何修改小工具或框架的源代码?
1).原则:能不修改就不修改。
2).修改的方法:
>修改源代码,替换jar包中对应的class文件。
>在本地新建相同的包,和类,在这个类中修改即可。

FileUpload文件上传相关推荐

  1. fileUpload 文件上传

    2019独角兽企业重金招聘Python工程师标准>>> 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础 ...

  2. ASP.NET Web程序设计——FileUpload文件上传控件

    FileUpload文件上传控件 主要功能:向指定的目录上传文件 控件包括:一个文本框 一个浏览按钮 属性 说明 HasFile 控件是否含有将要上传的文件 FileName 上传文件的文件名 Sav ...

  3. fileupload文件上传、下载教程

    fileupload概述 fileupload是由apache的commons组件提供的上传组件.它最主要的工作就是帮我们解析request.getInputStream(). 使用fileuploa ...

  4. fileupload文件上传用法概述

    目录     1.文件上传表单 和 普通文本表单 的区别     2.文件上传对页面的要求     3.文件上传对Servlet的要求     4.fileupload概述     5.fileupl ...

  5. asp.net fileupload 文件上传后服务器上找不到文件,Asp.net中FileUpload控件上传文件例子...

    FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器.用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles ...

  6. commons fileUpload 文件上传下载

    commons fileUpload 的使用: commons fileUpload 官网:http://commons.apache.org/fileupload/ 在上面可以下载:commons- ...

  7. web--使用fileupload进行文件上传

    FileUpload文件上传 fileUpload是apache的commons组件提供的上传组件,它最主要的工作就是帮我们解析request.getInpustream(). 使用fileUploa ...

  8. 在Struts 2中实现文件上传

    前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问题. 实现原理 Struts 2是通过Commons FileUpload文件上传.Commons ...

  9. 通过SpringMVC实现文件/多文件上传与下载案例

    在web开发中一般会有文件上传的操作 一般JavaWeb开发中文件上传使用的 Apache组织的Commons FileUpload组件 SpringMVC中使用 MultipartFile file ...

最新文章

  1. 粗糙集(Rough sets)、模糊逻辑(Fuzzy Logic)
  2. 基于I2C总线的0.96寸OLED显示屏驱动
  3. (转)编写可重入和线程安全的代码(Writing Reentrant and Thread-Safe Code)
  4. 今天同大家聊一下Git扩展
  5. 解决ajax 发送post 请求时csrf_token 问题
  6. Apache 服务器的配置
  7. Android Studio查找错误原因
  8. HTML怎么实现抽奖变色,html+css+js实现简单抽奖
  9. ZooKeeper学习总结(3)——ZooKeeper常见面试题
  10. c语言鸢尾花智能分类,基于LogisticRegression的鸢尾花分类
  11. 数控车椭圆编程实例带图_邹军:数控车床任意位置椭圆宏程序的编程
  12. linux下ros安装教程
  13. wps桌面图标不显示问题
  14. 在centos下安装使用busybox工具箱
  15. java.lang.StringIndexOutOfBoundsException
  16. wps图片与图片间距怎么调整_wps图片与图片间距怎么调整_微信图文排版,字间距,行间距,怎么调整合适?......
  17. 7.1 RAID(独立冗余磁盘阵列)
  18. ifft变换用java_利用FFT 及 IFFT实现傅立叶正反变换 | 学步园
  19. 【技巧】word交叉引用
  20. 国庆回家计划满满最后却摆烂这件事(解决?)

热门文章

  1. 保研笔记三 数据结构(未完待续)
  2. 2020科目一考试口诀_2021驾考科目一必过口诀
  3. fedora14配置无线连接
  4. 2021年安全员-B证(江西省)新版试题及安全员-B证(江西省)考试技巧
  5. 微电子电路——反相器网表详解
  6. AssertionError: Some objects had attributes which were not restored:
  7. SAP-MM知识精解-采购标准业务(02-01)-消耗性物料的采购之基于成本中心的采购
  8. TCP协议用socket连接时客户端请求服务器read()一直阻塞解决
  9. 简化STM32编程,eBox归来,助一臂之力
  10. Altium Designer使用技巧总结