`

使用common-fileupload组件文件上传需要注意的问题

阅读更多

1.上传文件的中文乱码
 1.1 解决文件的乱码
  ServletFileUpload.setHeaderEncoding("UTF-8")
 1.2 解决普通输入项的乱码(注意,表单类型为multipart/form-data的时候,设置request的编码是无效的)
  FileItem.setString("UTF-8");  //解决乱码

2.在处理表单之前,要记得调用:
 ServletFileUpload.isMultipartContent方法判断提交表单的类型,如果该方法返回true,则按上传方式处理,否则按照传统方式处理表单即可。


3.设置解析器缓冲区的大小,以及临时文件的删除
 设置解析器缓冲区的大小  DiskFileItemFactory.setSizeThreshold(1024*1024);
 临时文件的删除:在程序中处理完上传文件后,一定要记得调用item.delete()方法,以删除临时文件

4.在做上传系统时,千万要注意上传文件的保存目录,这个上传文件的保存目录绝对不能让外界直接访问到。

5.限制上传文件的类型
 在处理上传文件时,判断上传文件的后缀名是不是允许的

6.限制上传文件的大小
 调用解析器的ServletFileUpload.setFileSizeMax(1024*1024*5);就可以限制上传文件的大小,如果上传文件超出限制,则解析器会抛FileUploadBase.FileSizeLimitExceededException异常,程序员通过是否抓到这个异常,进而就可以给用户友好提示。


7.如何判断空的上传输入项
 String filename = item.getName().substring(item.getName().lastIndexOf("\\")+1);  //""
 if(filename==null || filename.trim().equals("")){
  continue;
 }

8、为避免上传文件的覆盖,程序在保存上传文件时,要为每一个文件生成一个唯一的文件名
 public String generateFileName(String filename){
  //83434-83u483-934934
  return UUID.randomUUID().toString() + "_" + filename;
 }

9、为避免在一个文件夹下面保存超过1000个文件,影响文件访问性能,程序应该把上传文件打散后存储。
 public String generateSavePath(String path,String filename){
  int hashcode = filename.hashCode();  //121221
  int dir1 = hashcode&15;
  int dir2 = (hashcode>>4)&0xf;
  
  String savepath = path + File.separator + dir1 + File.separator + dir2;
  File file = new File(savepath);
  if(!file.exists()){
   file.mkdirs();
  }
  return savepath;
 }

10、监听上传进度
  ServletFileUpload upload = new ServletFileUpload(factory);
   upload.setProgressListener(new ProgressListener(){
    public void update(long pBytesRead, long pContentLength, int pItems) {
     System.out.println("当前已解析:" + pBytesRead);
    }
   });

11、在web页面中添加动态上传输入项

分享到:
评论

相关推荐

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

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

    利用Common-fileupload封装的文件上传组件...附上源码.

    NULL 博文链接:https://412887952-qq-com.iteye.com/blog/1366123

    利用commons-fileupload组件实现文件上传-实例

    源码 博文链接:https://lisanlai.iteye.com/blog/660238

    common-fileupload

    利用commons-fileupload组件实现的java的文件的上传与下载。

    commons-fileupload、commons-io文件

    浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。

    commons-fileupload-1.2.1.jar 和commons-io-1.4.jar

    用开源的FileUpload组件,可以很方便的给自己的系统添加功能强大的文件上传模块。 该资源文件是两个jar打包成的压缩文件。

    JSP组件commons-fileupload实现文件上传

    本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...

    commons-fileupload文件上传组件中文教程--张孝祥写的

    本书详细讲解apache上传组件的使用方法,里面介绍组件中最主要方法的使用,是一本很难得的中文教程,通过这个教程,可以使得初学者很容易就能做到文件上传的功能.

    commons-fileupload-1.2.jar和commons-io-1.3.2.jar

    common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。该组件简单易用,可实现一次上传一个或多个文件,并可限制文件大小。 -下载后解压zip包,将commons-...

    common fileupload上传组件包

    此包中包含了使用common file upload组件必须要的两个组件!

    common-fileupload的详细介绍

    本节分析了Apache文件上传组件的实现思想和主要的源代码,建议读者参照本节的方式多分析一些开源项目。

    Jsp文件上传下载(工具类源码)

    commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp *" pageEncoding="gb2312"%> <!DOCTYPE ...

    JSP使用Common FileUpload组件实现文件上传及限制上传类型实例代码

    1、将commons-fileupload-1.3.3.jar复制到Web应用的lib文件夹下,在WebRoot目录下创建limit.jsp页面,在该页面中添加一个文件域的表单,设置类型为 multipart/form-data。代码如下: <body> 上传图书课件 ...

    common fileupload

    比较好的。。文件上传的组件common-fileupload。。。

    Java-文件上传与下载

    使用common-fileupload组件的jar包实现文件的上传与下载,博文转载自他人,资源仅供学习使用。

    文件上传与下载

    文件上传与下载 Jsp文件上传下载主要利用以下的两个组件 smartupload组件 common-fileupload组件

    基于Ajax技术实现文件上传带进度条

    1.概述 在实际的Web应该开发或网站开发过程中,经常需要...主要是应用开源的Common-FileUpload组件来实现分段文件上传,从而实现在上传过程中,不断获取上传进度。下面对Common-FileUpload组件进行详细介绍。 Commo

    apache-commons源码及jar文件

    FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 HttpClient Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架. IO IO 是一个 I/O 工具集 Jelly Jelly是一个基于 ...

    web项目常用jar包及说明.zip

    1.commons-fileupload.jar(commons项目中的关于文件上传的包, struts2.1.6版本后必须加入此文件) 2.commons-io.jar(commons项目(commons项目就是java中一些常用的公共的组件)的io子项目,是处理异常的) 3....

Global site tag (gtag.js) - Google Analytics