jfinal如何实现文件上传到非工程目录下并可以访问
jfinal图片上传到工程之外的文件夹后,怎么在浏览器访问该图片?就像springboot的static-locations那样可以配置静态资源目录?数据库里保存图片的相对路径,浏览器中只要访问该路径即可展现对应的图片?
主要是考虑到静态文件与应用的分离部署
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
嗯嗯,这是备选方案了
还有一种办法,就是使用nginx
在config里配置一下上传的路径,之后在你的controller里去对应路径读图片就行的
你的意思是在handler里对请求的key进行判断,如果是图片就用流写给浏览器?我想过,我试试吧
也可以暴力一点,不去查数据库的文件是否存在。不过这有点危险存在,自己要处理好文件名不能包含/或等特殊字符,他们会导致安全问题。
springboot 你都会了?
我说的是,在浏览器中打开上传到非工程目录下的图片
详见:Java访问硬盘,文件操作 貌似跟Jfinal没关系
现在图片已经传到工程之外的目录下,路径是C:you_tieuploadbackendsite20180325163210538000.png,baseUploadPath是C:/you_tie/upload/,浏览器访问http://localhost:8080/backend/site/20180325163210538000.png,还是报404错误。
回复
@陈俊凯 : 为 png、jpg 这些资源提供访问的是 tomcat、jetty、nginx 之类的服务,建议配置一下 nginx 指向相关的路径。或者在 jfinal 中添加一个 handler 来处理一下
回复
@JFinal : 嗯嗯,好的,明白了
在 configConstant 方法中通过 constants.setBaseUploadPath(...) 即可实现,如果希望上传到项目之外的目录,用一下绝对路径就可以:
1:linxu 系统示例 constants.setBaseUploadPath("/var/pic");
2:windows 系统示例 constants.setBaseUploadPath("d:/data/pic");