在哪里上传图像/文件以使其显示在HTML上?

时间:2017-08-27 19:19:16

标签: java html eclipse jsp nosuchfileexception

好吧,我正在使用Tomcat下的Eclipse Dynamic Web Project。 我正在尝试创建一个Web应用程序/站点。在jsp / html页面中,有一个用户可以上传照片的表单。 我从一个servlet处理这个动作,该servlet必须将这个图像/文件存储在某个地方,以便在我想要的时候在网站上显示图像。

这是问题。我首先将它存储在我的文件系统(数据库中的路径)上,但是当我想要检索它时,页面没有出现。 我想原因就在这里:

Why can't I do <img src="C:/localfile.jpg">?

然后,我尝试将文件存储在eclipse项目文件夹(WebContent /文件夹)中,我在那里手动存储了一些出现的图像。

{{1}}

但是发生了这种异常:

  

java.nio.file.NoSuchFileException:/TED/res/img/2017-08-13-123524.jpg

这是files.copy命令的一行,这意味着

  

我尝试失败的新文件(文件夹,文件名)

我该怎么办?根据我的阅读,我明白在IDE的项目文件夹中保存文件也是错误的,但我还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

最终,该项目将部署到服务器。因此,有三个不同的问题:

  1. 上传的用户内容位置:应将图片等内容上传到网络应用(项目)之外的文件夹中。 Web应用程序(项目)中的图像应该是应用程序所必需的,由开发人员提供的,而不是用户生成的。
  2. 在Eclipse中,在开发和测试期间,您将希望通过Tomcat提供这些图像。有很多方法可以做到这一点。 Tomcat配置可能不是最好的 - 请在此处阅读答案和讨论:Simplest way to serve static data from outside the application server in a Java web application
  3. 将应用程序部署到服务器后,Tomcat很可能会在Apache或Nginx等Web服务器后面运行。在这种情况下,外部图像文件夹及其包含的文件可以由Web服务器直接提供。即使您在(2)中使用Eclipse实现了一个用于本地测试的servlet,并且该servlet是部署的代码的一部分,也不会调用它,因为Web服务器在到达Tomcat之前将拦截该URL。例如,如果您在开发环境中上传的图像文件夹为C:\images,则servlet可以使用(2)中的技术/images/*为其提供服务。部署到服务器后,可以将Web服务器配置为从/images/*提供/srv/content/images,此请求永远不会到达Tomcat。