文件上传

以下为servlet处理文件上传文件的时候所放生的一些常见问题和常用设置。

1.     上传的文件有中文乱码问题。

利用解析器中的setHeaderEncoding(String Encoding).就能解决

2.     在普通输入项中的中文乱码问题。

FileItem的对象有一个getString(String Encoding),调用时指定字符集即可解决。

3.     不同用户在上传同一文件名的文件时,如何避免文件冲突

利用UUID中的randomUUID()即可得到一个随机字符串,添加到文件上即可避免文件冲突。

4.     如何限制上传文件大小

setFileSizeMax(longlength)设置单个文件的最大长度

setSizeMax(longlength)设置所有文件的最大长度

5.     在拥有多个上传文本框的时候,如何防止用户不填写所有文本框

通过if语句来判定,如果为空串,即不执行下面的语句

6.     如何得到上传文件的扩展名

通过剪切字符串的方法来得到

7.     如何限定上传文件类型

首先定义一个拥有多个扩展名的列表,通过上述方法得到上传文件的扩展名后,利用list列表的contains()方法来比较是否合法

8.     如何防止用户上传文件后恶意访问

将上传的文件存储在WEB-INF下,就不能访问

9.     如何创建多级目录

利用位运算符,通过得到文件名的hashcode来得到不同的目录或子目录。详见下方法

public String generateFilePath(String path,String filename){

       //产生目录结构的算法

       int dir1=filename.hashCode() & 0x0f;//一级目录名

       int dir2=filename.hashCode()>>4 & 0x0f;//二级目录名

       String savePath=dir1+"\\"+dir2+"\\";

       File f=new File(savePath);

       if(!f.exists()){

           f.mkdirs();

       }

       return savePath;

    }

10.           如何得到上传文件的状态(即文件传输进度)

创建内部类实现ProgressListener接口,并实现update方法(第一个参数为已上传数据大小,第二个为当前文件大小,第三个为第几个文件)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值