您的位置:首页 > 其它

文件上传所需要注意的常见事项

2011-11-24 21:29 316 查看
文件的上传(下)
以下为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方法(第一个参数为已上传数据大小,第二个为当前文件大小,第三个为第几个文件)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息