美文网首页代码改变世界WEB前端程序开发程序员
文件上传中需要考虑的几个问题

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

作者: 罗志贇 | 来源:发表于2017-01-13 00:20 被阅读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");```
       
           ​

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/bqbjbttx.html