请问图片上传一般是传到什么地方?项目源文件 还是 项目的部署目录?
请问图片上传一般是传到什么地方?项目源文件 还是 项目的部署目录?
1、传到项目的源文件目录下 需要 路径硬编码,即(D:/img)。这种方式好像不推荐。。
2、传到项目的部署目录下的话如果服务器重启图片什么的就都清空了。。
所以现在好纠结该写在什么地方
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
上面说的都可以实现,简单说下:
1.附件或者图片建议不要存放在项目目录里,单独存放,后续做附件拷贝,或者整个web服务器拷贝,而不需要拷贝里面大量的附件。
2.附件可以和应用方一个服务器,也可以放不同的服务器,取决你是否有多余的机器。放同一个服务器,只有文件目录可以让tomcat有写的权限即可。放不同的服务器,需要做到文件夹的共享,有很多实现方式,例如:nfs等,做好权限。
3.附件存放的目录,用一个web服务器,例如nginx,指向火来,即可访问。
4.数据库中存放相对路径。比如:文件存在/data/a/b.txt 数据库只存/a/b.txt。web服务器nginx在做location时,增加/a比配规则即可。
5.存放七牛,阿里云等服务器,可以有cdn服务,但是多了一个上传动作。
nginx 图片服务器;在项目外很好用
资源文件最好跟项目目录区分开,做好权限控制,用nginx配置静态资源服务器。
上传七牛这种
图片上传一般上传到项目文件里面
1、传到项目的源文件里面,你可以写相对路径,例如 media/photo 目录这种格式,而media目录在你项目里面。
2、重启服务器图片并不会清空,你说的应该是部署下一个版本的话,图片会被清空,这种情况,你可以在部署的时候,在项目外建立一个目录,然后和项目内的media目录建立软连接。这样,目录实际存储内容就在项目外了。
你如果有空余的机器,就搭建一个图片服务器,把压力转到那台机器上,有jersey这些第三方组件
对象存储
在项目外建个文件夹,然后项目目录下做软连接
/contextPath/staticFiles/file/aaa.jpg
contextPath=上下文
staticFiles是一个控制器
file 是一个action方法
aaa.jpg是一个存储的文件名
那么aaa.jpg放服务器上面那里呢,你自己可以按需设计,比如d:storageprojectNameaaa.jpg
设计上传文件管理Service,处理文件存储读写。
控制器负责提供http请求服务。