Sparkjava框架中如何获取上传图片的路径?

Posted

技术标签:

【中文标题】Sparkjava框架中如何获取上传图片的路径?【英文标题】:how to get the path of upload images in Sparkjava framework? 【发布时间】:2016-08-16 06:29:45 【问题描述】:

在我的项目中,我通过upload method中的方法上传图片。 项目目录是:

Project
   |---src/main/java
   |---src/main/resources
                   |---static
                          |---css
                               |---default.css
   |---upload
         |---1.jpg
         |---2.jpg

freemarker 渲染的视图页面。在我的showimage.ftl文件中,img标签<img src="...">,如何在src中定义上传的图片路径。

如果把上传图片放在src/main/resources,我可以使用staticFileLocation的方法访问,但是不能上传图片到资源目录。

【问题讨论】:

【参考方案1】:

您需要获取文件流,并发送原始响应。 只需根据您的请求对象修改代码以获得灵活的路径。

try 
   String path = "upload/1.jpg";
   Path p = Paths.get(path);

   InputStream is = new FileInputStream(p.toFile());

   res.raw().setContentType(Files.probeContentType(p));
   res.raw().setHeader("Content-Disposition", "inline; filename=" + p.getFileName());

   byte[] buffer = new byte[1024];
   int len;
   while ((len = is.read(buffer)) > 0) 
      res.raw().getOutputStream().write(buffer, 0, len);
   

   String result = IOUtils.toString(is);
   is.close();
   return result.trim();
 catch (Exception e)  // handle the exceptions the way you want
   logger.error("Error while getting resource", e);
   res.status(500);
   return "";

【讨论】:

你的解决方案不是很理想。您不能将流转换为字符串,存储在内存中,只是为了将其发送给客户端。为什么不直接将其流式传输到 Outputstream 以避免内存问题?

以上是关于Sparkjava框架中如何获取上传图片的路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spark Java 框架中使用 get 获取请求参数?

用fileupload上传图片,怎么获取上传后图片的相对路径

java web实现上传头像功能,

js关于图片上传路径的获取

iOS实现视频和图片的上传

java项目客户上传的图片放到哪好