上传文件的一些实现细节

来源:互联网 发布:发乎于情止乎于礼全文 编辑:程序博客网 时间:2024/05/01 23:06
 

 

1)上传文件的中文乱码:upload.setHeaderEncoding("utf-8");

2)普通输入项的乱码问题:

手工方式:inputValue=new String(inputValue.getBytes("ISO8859-1"),"utf-8");

String inputValue=item.getString("utf-8");

3)防止用户不在文件上传的输入项输入上传文件

if(!filename.trim().equals("")){

//读取上传文件的内容,并存入本地磁盘

}

4)临时文件的删除问题

factory.setRepository(new File(this.getServletContext().getRealPath("/temp")));

。。。

is.close();

fos.close();

item.delete();

5)上传文件的保存位置:服务的安全性

WEB-INF文件夹下的子文件夹中

或者不受服务器管理的目录

6)多个用户上传了同名的文件,这时后面的人上传的文件就会覆盖原有的同名文件

唯一文件名,解决办法UUID.randomUUID().toString()

filename=UUID.randomUUID().toString()+"_"+filename;

7)在同一个文件夹放置文件过多。

1257893    ===01001001111101101010101 

                     & 00000000000000000001111

                         00000000000000000000101 5  upload文件下键一个子文件夹5

00000100100111110110101 

00000000000000000001111

00000000000000000000101===5  二级目录

                        upload

0   1    2    3  。。。。。。。15

        0   1 2 3 。。15

16*16*1000

public String generateFilePath(String path,String filename){

//产生目录结构的算法:hash目录

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

int dir2=filename.hashCode()>>4 & 0x0f;

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

File f=new File(savePath);

if(!f.exists()){

f.mkdirs();

}

return savePath;

}

8)限制上传文件的大小

upload.setFileSizeMax(1024*1024);

upload.setSizeMax();

9)限制上传的文件的类型

能上传哪些类型的文件

String[] arr={".jpg",".bmp",".avi"};

List fileType=Arrays.asList(arr);

 List fileType=Arrays.asList(".jpg",".bmp","");

String ext=filename.substring(filename.lastIndexOf("."));

if(!fileType.contains(ext)){

request.setAttribute("message","文件类型只能是jpgbmpavi");

request.getRequestDispatcher("/message.jsp").forward(request,response);

return;

}

10)多个文件的问题

11)显示上传进度

ProgressListener接口 update()

分级目录代码:

public String generateFilePath(String path,String filename){

//产生目录结构的算法:hash目录

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

int dir2=filename.hashCode()>>4 & 0x0f;

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

File f=new File(savePath);

if(!f.exists()){

f.mkdirs();

}

return savePath;

}

/**

原创粉丝点击