代码改变世界WEB前端程序开发程序员

文件上传中需要考虑的几个问题

2017-01-13  本文已影响0人  罗志贇
  1. 保证服务器的安全

    把上传的文件放到WEB-INF目录下,因为所有放到WEB-INF目录下的文件,用户是不可以随意的访问下载的,增强了文件的安全性

  2. 重名文件被覆盖问题

    生成随机名:

//此条代码会生成一个36位的一个随机码,类似于UUID,但是不同的是,次条代码生成的随机码不会用"-"进行连接,这样便于当作文件名来使用
new BigInteger(165, new Random()).toString(36).toUpperCase();
  1. 避免一个文件夹的文件过多

    • 按照日期分目录存储
 //这个方法可以生成共256个文件夹
private String genChildDirectory(String realPath, String fileName) {
            int hashCode = fileName.hashCode();
      //根据文件名的哈希值生成一个0~16的一个数字,用来当作一级目录
        int dir1 = hashCode&0xf;
      //根据文件名的哈希值生成一个0~16的一个数字,用来当作二级目录
      int dir2 = (hashCode&0xf0)>>4;
      //文件的路径名
     String str = dir1+File.separator+dir2;
    //判断文件夹是否存在,不存在则创建
    File file = new File(realPath,str);
     if(!file.exists()){
            file.mkdirs();
     }
    return str;
}
  - 按照文件名的hashcode随机生成目录
     //按照日期生成子目录
       private String genChildDirectory(String realPath) {
           Date now = new Date();
               //格式化日期
           DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
               //将日期深成字符串
           String str = df.format(now);
           //创建文件
           File file = new File(realPath,str);
           if(!file.exists()){
               file.mkdirs();
           }
           
           return str;
       }
  1. 中文乱码

    • 普通字段
 FileItem.getString(String charset);
    ​


  - 上传的中文文件
request.setCharacterEncoding("UTF-8");```
   
       ​
上一篇下一篇

猜你喜欢

热点阅读