关于文件上传到非web目录下的其他盘里怎么样访问

文件上传时将文件上传到指定目录(该目录非项目目录)然后将文件保存到数据库 ,那么下次通过数据库读取本地网页到页面上显示的话是不是需要做处理,我目前是通过hander 做的处理有没有其他的实现方式?

评论区

杜福忠

2017-12-21 13:37

renderFile(File);

JFinal

2017-12-21 14:07

@杜福忠 正解,感谢感谢

Lg

2017-12-22 10:45

@杜福忠 我的意思比如有些富文本编辑器编辑一篇文章完成后保存 本地数据库 然后对应的文件也会保存到本地的非web项目 然后访问该文章内容应该类似的 : 这种情况下是不是需要自己定义hander 做处理 现在是这么做的:

定义了一个 handle 做相应的处理 您刚才说的 renderFile(File); 能实现这种场景需求吗 感谢回复
@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
if ((target.contains(".jpg") || target.contains(".jpeg") || target.contains(".png") || target.contains(".gif"))&&target.contains(path)){
try{
String folad=PropKit.get("uploadPath");
FileInputStream hFile = new FileInputStream(folad+(target.replace(path,""))); // 以byte流的方式打开文件 d:\1.gif
request.getRequestURI();
int i=hFile.available(); //得到文件大小
byte data[]=new byte[i];
hFile.read(data); //读数据
hFile.close();
response.setContentType("image/*"); //设置返回的文件类型
OutputStream toClient=response.getOutputStream(); //得到向客户端输出二进制数据的对象
toClient.write(data); //输出数据
toClient.close();
}catch (Exception e) {
System.out.println(target+"---不存在---");
}
isHandled[0]=true;
}
next.handle(target, request, response, isHandled);
}

Lg

2017-12-22 10:53

@Lg @杜福忠 那个显示不出来的图片是代码 页面上把他识别了

Lg

2017-12-22 10:55

杜福忠

2017-12-22 12:50

无图
这样?

Lg

2017-12-22 13:39

就是我要实现利用百度那种文本编辑器一片图文博客,需要上传图片,这个图片上传到了非web目录 下 编辑完发布的时候 需要展示出来图片 和文字,上传的内容 是以html标签的形式 存到数据库 取出来的话 肯定会有 < -img alt="无图" src-="http://www.jfinal.com/upload/avatar/5/25017.jpg"> 这样的请况呀,不是要下载而是要在页面上展示出来

杜福忠

2017-12-22 13:45

你是想这样 ?
@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
if ( target.indexOf('.') != -1 && target.contains("/files/") ) {
RenderManager.me().getRenderFactory().getFileRender(new File(target));
return;
}
next.handle(target, request, response, isHandled);

Lg

2017-12-22 13:50

@杜福忠 其实说白了就是读取本地文件在页面上显示

小白菜111

2020-03-18 19:16

我发现我打成war包放入tomcat中,重新上传war包 会把之前war解析出来的文件,重新覆盖,然后如果上传到upload目录下的文件都会被删除。。所以很希望有个像springboot一样的功能,自定义其他盘符,再通过http://xxx.com/upload/xx.jpg访问到该资源。

热门反馈

扫码入社