6
回答
jfinal如何实现文件上传到非工程目录下并可以访问
华为云数据库免费试用   

jfinal图片上传到工程之外的文件夹后,怎么在浏览器访问该图片?就像springboot的static-locations那样可以配置静态资源目录?数据库里保存图片的相对路径,浏览器中只要访问该路径即可展现对应的图片?

主要是考虑到静态文件与应用的分离部署

举报
陈俊凯
发帖于6个月前 6回/558阅

在 configConstant 方法中通过 constants.setBaseUploadPath(...) 即可实现,如果希望上传到项目之外的目录,用一下绝对路径就可以: 

1:linxu 系统示例 constants.setBaseUploadPath("/var/pic");

2:windows 系统示例 constants.setBaseUploadPath("d:/data/pic");

--- 共有 3 条评论 ---
陈俊凯 回复 @JFinal : 嗯嗯,好的,明白了 6个月前 回复
JFinal 回复 @陈俊凯 : 为 png、jpg 这些资源提供访问的是 tomcat、jetty、nginx 之类的服务,建议配置一下 nginx 指向相关的路径。或者在 jfinal 中添加一个 handler 来处理一下 6个月前 回复
陈俊凯现在图片已经传到工程之外的目录下,路径是C:\you_tie\upload\backend\site\20180325163210538000.png,baseUploadPath是C:/you_tie/upload/,浏览器访问http://localhost:8080/backend/site/20180325163210538000.png,还是报404错误。 6个月前 回复

调用接口示例:www.example.com/cms/images?f=xxx.jpg

 

后端:

配置你的 Controller,写一个Service,查询数据库 xxx.jpg 是否存在,存在则读取硬盘上面的文件,response.getOutputStream().write(bytes)

--- 共有 2 条评论 ---
蓝水晶飞机也可以暴力一点,不去查数据库的文件是否存在。不过这有点危险存在,自己要处理好文件名不能包含/或\等特殊字符,他们会导致安全问题。 6个月前 回复
陈俊凯你的意思是在handler里对请求的key进行判断,如果是图片就用流写给浏览器?我想过,我试试吧 6个月前 回复
顶部