java web --fileupload插件网页文件管理

本文介绍了如何在Java Web项目中使用Fileupload插件进行文件上传和管理。通过创建FileManager.java类,定义文件存储结构,以及利用文件名哈希值构建四层文件夹存储文件。此外,文章还展示了如何为存储文件提供访问链接,并在Controller层处理文件上传。文件管理系统的设计思路与FastDFS分布式文件系统有相似之处,但规模较小,适合硬件资源有限的环境。
摘要由CSDN通过智能技术生成

导言:在实际web 项目中,我们常常会碰到这种情况,在后台管理平台上,后台管理人员需要上传一些文件,例如促销活动图片以及活动文案文件到服务器上,然后推广到产品宣传首页,完成动态部署产品相关销售活动的功能。通常,在大流量情况下,我们会考虑把文件存放到单独的文件服务器上,利用第三方分布式文件系统完成相关文件服务器的部署工作,例如我个人做过利用FastDFS+Solr+zeroMQ框架完成了从服务器端到客户端的分布式文件系统管理系统的搭建工作。那么在硬件环境相对匮乏的情况下,如何去处理这些文件的存放与查找呢?这就是本文所要描述的。
web文件管理,主要涉及到以下几个方面:

  1. 文件的上传
  2. 文件存储的组织方式
  3. web文件获取方式
    其中,尤其以文件存储的组织方式为要。
    首先定义一个类,用于存储网络文件到本地,建立起合适的文件组织结构,并提供web访问接口。该类命名为FileManager.java,首先定义类的构造方式,与类的私有变量等
public class FileManager {
   
    public static final String ERROR = "ERROR";
    public static final String NONE = "NONE";
    //根目录
    private String basePath;
    /*//自定义存储根路径
    public FileManager(String basePath){
        this.basePath = basePath;
    }*/
    //默认存储根路径
    public FileManager(){
        this.basePath = this.getClass().getResource("/").getPath().split("webapps")[0]+"webapps/file";
    }

    public String getBasePath(){
        return this.basePath;
    }
    .
    .
    .
}

这里讲自定义存储路径的方式注释了,而是采用固定的文件夹来存储文件,此处是指tomcat/webapps/file目录。需要说明的是,此处的file目录为一个空的web工程部署文件夹,如果只是新建一个空的文件夹用于存储文件,是无法通过链接访问到其中的文件的
再就提到存储文件的组织方式了,为了不使单个文件夹下的文件数目过多,采用文件名的哈希值的后16位构建深度为4的文件夹结构来存储各类文件。原则上,此处饱和情况下可创建2^16个子文件夹用于存储文件。根据文件名构建文件存储路径的方法代码如下:

/**
     * 根据hash算法,确定存放目录
     * @param filename
     * @return
     */
    private String getPath(String filename){
        try{
            //得到文件名的hashCode的值,取二进制后16位,文件夹深度为4
            int hashcode = filename.hashCode();
            String dir_suffix = "/"+(hashcode & 0xf)+"/"+((hashcode & 0xf0) >> 4)+"/"+((hashcode & 0xf00) >> 8)+"/"+((hashcode & 0xf000) >> 12);
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值