上传文件的一些细节:

1、  文件上传中文乱码:upload.setHeaderEncoding(“  ”);

2、  普通输入项的乱码:item.getString(“ ”);

3、  防止用户不再文件上传的输入项输入上传文件:if(!filename.trim,eques(“”)){}

4、  临时文件删除问题:factory.setRepository(new File(this.getServletContext().getRealPath("/temp"));

 

……….

Is.close();

Fos.close();

Item.delete();

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

不受服务器管理的目录:在c盘

外界不能访问的:在web-inf的子文件夹中

6、  防止上传文件的名字一样被覆盖掉:

给予为一个文件名

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

7、  在同一个文件夹下过多的

Hash目录

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

    public String generateFilePath(String path,String filename){

      

       //位运算?

       int dir1 = filename.hashCode() & 0xf;//一级目录,让得到的hash码和一个十六进制得数进行与运算

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

      

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

       File f = new File(savepath);

       if(!f.exists()){  //若目录结构不存在,则要建一个目录

           f.mkdirs();       //注意必须用mkdirs() 而不是mkdir()

       }

       return savepath;

}

8、、限制上传文件大小

    upload.setFileSizeMax(1024*1024);

           upload.setSizeMax(1024*1024*3);

9、  限制上传类型:

方法一:

String[] arr={“.jpg”,”.bmp”,”.avi”,”.txt”};

List fileType= Arrays.asList(arr);

方法二:

List fileType= Arrays.asList(“.jpg”,”.bmp”,”.avi”,”.txt”);

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

                     filename=filename.substring(filename.lastIndexOf("\\")+1);//因为使用的不同浏览器进行访问,为了得到文件名

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

                     if(!fileType.contains(var)){

                         request.setAttribute("message","上传的文件只能是.jpg,.bmp,.avi,.txt的格式!");

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

                         return ;

                     }

               }

 

10、              上传多个文件

 

 

 

11、              显示上传进度

ProgressListener接口 中的方法update()

 

ProgressListener接口 中的方法update()

l       ProgressListener显示上传进度

ProgressListener progressListener = new ProgressListener() {

public void update(long pBytesRead, long pContentLength, int pItems) {

 

System.out.println("到现在为止,  " + pBytesRead + " 字节已上传,总大小为 "

          + pContentLength);

}

};

upload.setProgressListener(progressListener);

l       以KB为单位显示上传进度

long temp = -1;   //temp注意设置为类变量

long ctemp = pBytesRead /1024;

if (mBytes == ctemp) 

return;

temp = mBytes;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值