美文网首页代码改变世界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