java play 文件下载_Play1.2.4 实现项目文件和上传文件分离

项目现状:   两台服务器通过nfs共享public目录, public 目录存js,css ,图片等文件,这部分文件经常有增加,更新的需求,偶尔有删除的需求,其实并没有执行过删除操作,不想更新部分文件时,就会将整个public更新到服务器上去,虽然花费时间长,但是十分省事。 用户上传的文件存储在public/upload 目录下, 通过  aaa.com/public/   来访问项目的静态资源。

6348225140c2909e1ec44d5a7ad24ea6.png

关于 upload 目录的一些限制,

1: 有时我想删除整个public,然后重新上传,但是由于upload的存在,不管public存在多少多余的文件,我都不敢删除public。

2: 上传整个public目录时,总担心 upload 目录的文件被本地测试文件替换,虽然本地upload和线上upload 存在同名文件的概率很小。

3: 关于把项目名称改改,部署到另外一个目录,或者新增一个实例的想法都不敢有,操作起来太麻烦。如果是使用tomcat来进行部署更是一种灾难。

/opt/xfyh/apache-tomcat-7.0.94/webapps/ROOT/WEB-INF/application/public/upload。  虽然我知道你可能会说 tomcat 和 war 分离

,但是前面两个问题还是会存在。

因此将项目文件和用户上传文件分离开还是十分必要的。  解决办法也无非就是将upload 目录移到项目外面去, 具体做法如下:

1:   配置 routes 文件

515069a6bd011d7fcf71a053ed5003ce.png

将所有的 /upload/xxx 请求mapping 到  UploadController.index  上面去。

2: UploadController.index 处理逻辑如下,主要在于找到文件的绝对路径。

3addf14e6bb309c35d62cc48e70c82ef.png

3: 上传文件时的处理:  将tmp目录的文件 copy 到  uploadPath 目录中去及可。

相应的spring的解决方案:

a651a4e3bba3892440f121a78f475bd1.png

想比较而言 spirng 的解决方案更加灵活,因为spring的解决方案能添加任意多个静态资源目录。

关于其他play的不足之处:

1: 需要程序员手动的删除文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值