springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)

项目中有涉及到上传附件,上传照片等类似需求,且需要提供下载。由于这些量不大,可以直接用七牛云存储或者阿里云存储等类似东西,但是不想花钱,项目不大,就想用tomcat来作为文件服务器,文件直接上传到自己的服务器上即可。

第一步:先创建tomcat文件服务器。

上传文件到服务器,如果自己配置用类似tomcat的容器的话,每次重启服务器后 文件会消失,或者会存在丢失现象,解决方式:利用虚拟目录,将tomcat和上传的文件分离。具体就是利用tomcat配置将某个请求映射到物理路径下,完成文件回显。这样文件可以存放在本地,或者远程服务器上,而非tomcat上面。在http://xx.xx.xx.xx:xxxx/服务器上, tomcat配置为

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第1张图片
tomcat 配置

web.xml 修改配置为(为true 可以查看列表,false 就是关闭,为了看出效果,就打开)

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第2张图片
web.xml配置

这样启动tomcat后 浏览器访问地址,结果如下:

第二步:上传文件

html中部分代码如下:

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第3张图片
html文件

vue中 方法如下:

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第4张图片
vue中方法

后台controller 中的mapping ,其中 downloadDir 和 isForTest 是写在 application.yml中,区别测试和正式服务器

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第5张图片

FileUtil.java

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第6张图片
FileUtil.java

页面显示

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第7张图片
点击上传

上传结果:

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第8张图片

第三步:下载

下载可以直接用windows.location.href =url   这种对jpg 或者txt类型文件 会被直接打开,用XMLHttpRequest来下载,如下

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第9张图片
下载方法

jqGrid的colModel 中 显示如下

springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第10张图片

此时下载会提示  跨域问题

跨域bug
springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域)_第11张图片

再次下载,成功!

你可能感兴趣的:(springboot实现文件上传下载,(利用tomcat8搭建文件服务器,解决跨域))