上传文件的一些细节

 1、  上传文件的中文乱码问题

a)         文件名乱码;

解析器调用setHeaderEncoding()

upload.setHeaderEncoding("utf-8");

b)      普通项输入内容乱码:

1.      解码普通输入内容时的编码方式需与页面解码方式相同

a)      Value=new String(Value.getBytes("iso8859-1"),"utf-8");

b)      Value是存储输入内容的字符串

c)      String value=item.getString(“utf-8”);item是用户输入项

c)      防止用户在文件上传时不在文件上传的输入项内输入上传文件

                  if(!filename.trim().equals("")){//截取掉名字两边的空串,和空串比较看是否为空串决定是否执行程序

              //获取文件名

              //。。。。。。

}

d)      临时文件的删除问题

                    i.              //指定临时文件的保存位子

           factory.setRepository(new File(this.getServletContext().getRealPath("/temp")));//将临时文件存在指定路径

                ii.              最后添加 item.delete();删除临时代码(其要添加在流关闭后)

e)      上传文件的保存位子:服务的安全性

                    i.              保存在WEB-INF文件夹下的子文件中

f)      多个用户上传了同名的文件。一个用户上传后。别的用户上传想同文件名字的文件则会覆盖上一个用户上传的信息,解决方法:filename=UUID.randomUUID().toString()+"_"+filename;//处理上传文件名相同覆盖问题。

g)      在同一个文件夹放置文件过多:hash目录方法---:

public String generateFilePath(String path,String filename){

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

    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;

h)      限制上文件的大小

1.      upload.setFileSizeMax(1024*1024);

i)      控制上传文件的类型

1.      能上传那些文件的类型

a)      String[] arr={“.jpg”,”bmp”,”avi”}

b)      Private List fileType=new ArrayList(arr);

String ext=filename.substring(filename.lastIndexOf("."));//获取扩展名

                  if(!fileType.contains(ext)){

                     request.setAttribute("message","上传失败--文件类型只能是jpg,txt,jar");

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

                     return;

                  }                

j)      显示上传进度

 

                    i.              ProgressListener接口---update()

class ProgerssHandle implements ProgressListener{

       public void update(long arg0, long arg1, int arg2) {

           // TODO Auto-generated method stub

           System.out.println("已经处理了"+arg0+"数据,总数据是"+arg1+"正在处理第"+arg2+"个数据");

 

       }

    }

    ii.

    upload.setProgressListener(new ProgerssHandle());//文件上传进度监听器

       

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值