【问题标题】:Spring-MVC, Java : Creating URL for image saved on FileSystemSpring-MVC,Java:为保存在文件系统上的图像创建 URL
【发布时间】:2015-07-08 18:00:25
【问题描述】:

我正在开发一个 Spring-MVC 应用程序,在该应用程序中,我们将缩略图保存在文件系统本身上。现在进行聊天,我想为保存在文件系统上的缩略图创建一个 URL,并在前端传递它。

例如:图片保存在

/home/username/datadir/personid.png

我想给 url 类似的东西:

domainname.com/personid.png

请注意 PersonId 是唯一的,因此我可以使用该约束。保存图片的部分已经完成,我只是不知道如何从File-System上保存的文件中创建一个图片URL。

任何帮助都会很好。非常感谢.. :-)

【问题讨论】:

标签: java image spring-mvc image-conversion imageurl


【解决方案1】:

您应该使用请求处理程序来中间调用此调用,例如

@RequestMapping("/image/{personId}")
@ResponseBody
public HttpEntity<byte[]> getPhoto(@PathVariable String personId) {
    byte[] image = org.apache.commons.io.FileUtils.readFileToByteArray(new File([YOUR PATH] + File.separator + personId + ".png"));

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.IMAGE_PNG); 
    headers.setContentLength(image.length);
    return new HttpEntity<byte[]>(image, headers);
}

还请注意,您可以使用内容分析来确定正确的媒体类型,例如在Apache Tika 的帮助下。这样您就不必存储文件名或对扩展名进行硬编码

【讨论】:

  • @Master Slave :这将发送字节数组。我想发送保存在服务器上的文件的位置,以便可以相应地加载它。我不想在字节数组中发送文件内容,但我想将图像的位置作为 URL 发送。例如localhost:9090/assets/personId.png
【解决方案2】:

首先你可以通过两种方式做到这一点,首先在你的tomcat的conf文件夹中有一个名为server.xml的文件,添加下面的行

<Context docBase="YOUR/FILE/PATH"   path="/" />

之后,如果您将文件保存到 YOUR/FILE/PATH,tomcat 会将其作为 domainname.com/filename 提供给外部

第二种方法更复杂,你必须谷歌一下。当主从回答时,您可以打开一个控制器,将您的图像提供给外部。

Rg.

【讨论】:

  • 我试过你的方法,它不起作用,你能帮帮我吗?我在我的 tomcat 上添加了 ,然后重新启动服务器,我在 movehere 文件夹中粘贴了一个文件,但我得到了 404。
  • 只要你有时间,你能告诉我我要做什么。谢谢。
  • 去你的服务器(可能有一个ssh连接)然后进入你的tomcat的文件夹,然后有一个名为conf的文件夹,里面有server.xml。你必须正确地插入它。这是一个可以为您提供线索的 stackoverflow 问题:stackoverflow.com/questions/417658/…
  • 我在 localhost 上测试它,我知道 server.xml,就像我说的,我已经添加了它,但我不知道我的项目的 web.xml 中也需要添加一些东西在您提供的链接中提到。您可以编辑答案以包含详细信息吗?谢谢。
  • 如果你使用的是spring web mvc,应该没有这个需求。我的回答就够了,因为我是自己申请的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2017-02-21
  • 1970-01-01
相关资源
最近更新 更多