JavaWeb项目文件上传下载

文件上传下载是web项目常见的功能,最近有个项目要求把文件保存到项目路径外,正好总结一下

一、文件上传

1.文件保存在项目路径下

    1.1 WEB-INF目录不允许通过Url直接访问,因此一般存放比较重要的文件,需要登录后通过服务器程序去访问,可以做一些权限控制;

    1.2 而允许任何人访问的文件(如淘宝商品的图片),所以这类文件可以放在WEB-INF目录外,可以通过url直接访问。

2.文件保存在项目路径外

如果文件保存在项目路径下,每次发布war包会覆盖项目路径容易丢失文件,因此上传的文件一般保存在项目路径外。但是这种情况,用户不能直接访问服务器外面的静态资源,解决方法一般有三种

    2.1 配置tomcat虚拟主机,相当于将文件保存路径映射为一个web工程,可以通过url直接访问

    2.2 使用nginx反向代理,配置文件服务器,方法与第一种类似,也可以通过url直接访问

    2.3 编写服务端action处理用户的访问请求,通过数据流来读取文件

3.文件上传成功后,将文件存储的路径保存到数据库中,用于文件下载

二、文件下载

1.url直接指向下载资源

    这时使用 DefaultServlet ,将资源返回。第一部分1.1、2.1和2.2都属于这种情况

2.编写服务端action,通过数据流下载,这里要使用文件的MIME协议,这里就不展开了

    第一部分1.2、2.3属于则属于这种情况

3.文件下载安全

    文件名通过随机码命名,将路径和文件名保存在数据库中,一般很难猜到;另外如果时采用服务端action的方式,可以在action中做一些权限控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值