好记星不如烂笔头,这里记录平时工作中用到的东西,不喜可以留言。
目录
2: 百度UEditor 上传组件 使用虚拟路径映射配置【方法不好侵染代码】
java单体项目上传文件都会放到类似 "D:\server\tomcat 8.5.8081\webapps\projectname\upload"的一个目录,放置上传的文件。但是多人发布或者使用自动化部署工具经常误操作或者忘记备份upload文件夹导致上传的图片、资料、视频等丢失;
其实目前来说,除了放到tomcat里面,还可以放到 ftp、oss、fastdfs 等各种存储和应用分离的地方。
这里是通过tomcat配置,可以解决小型项目单体服务器分布式处理上传文件的痛点。
1:配置tomcat设置访问上传文件路径
a: 我们通过tomcat配置,把原来的上传文件放到项目内部的目录映射到tomcat外部,如 类似”D:\server\projectnameUploadRoot\upload“。
b:注意目录需要提前创建好, 否则可能tomcat启动失败
c:需要修改配置文件是:D:\server\tomcat 8.5.8081\conf\server.xml
<!--代码片段,具体自己修改tomcat/cong/server.xml中的<Host节点把-->
<!--path是http请求地址,docBase是操作系统文件路径(相对、绝对都可以)-->
<Context docBase="../../hiberUploadRoot/upload" path="/hiber/upload/"/>
<Context docBase="E:\picture\upload" path="/hiber/upload/"/>
<Context docBase="/Users/hiberUploadRoot/upload" path="/hiber/upload/"/>
2: 百度UEditor 上传组件 使用虚拟路径映射配置【方法不好侵染代码】
解决ueditor上传文件到tomcat虚拟路径等问题【【好】】
第一步里面设置了映射目录,发现百度UEditor还是不行,看源码为啥。
3: 其他解决办法说明
A: 写个互备的bat/powershell脚本 在windows下任务计划每天不定时的去执行 或者使用shell 实时同步目录
B: LemonOa上传的文件都在webapp外边,就是下载显示需要实现一个controller。具体是
LemonOA目前就是定义了一个参数store.baseDir作为所有附件的根目录,然后读取都以这个目录为根,不同模块使用不同前缀区分,目录采用时间+uuid的方式避免重复,数据库里保存相对路径和文件名等元数据。
对,上传没有什么区别,但是下载和显示时需要controller,所以比放在webapp里麻烦
如果想做得更好,下载和显示时,还要处理fileName和content-type,所以工作量会多一些
C: linux/windows 实时同步目录,项目中已经实践,参见自己的博客-检测目录、文件夹实时
D: 使用其他云存储,比如 aliyun OSS(按量特别便宜)、FastDFS、MinIo、Ftp、windows SMB协议【契约锁老版文件服务器】等