在哪里上传 image/file 以使其出现在 HTML 上?

Where to upload an image/file to make it appear on HTML?

嗯,我正在 Tomcat 下开发 Eclipse 动态 Web 项目。 我正在尝试制作一个网站 application/site。在 jsp/html 页面中,有一个用户可以上传照片的表单。 然后我从一个 servlet 处理这个动作,该 servlet 必须将这个 image/file 存储在某个地方,以便图像可以在我想要的任何时候出现在网站上。

这是 problem.I 开始时将其存储在我的文件系统(数据库中的路径),但是当我想检索它时,页面没有出现。 我想原因在这里:

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

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

    File folder=new File("/TED/res/img");
    File file=new File(folder,fileName);
    System.out.println(file.toPath());
    Files.copy(fileContent, file.toPath());

但是出现了这个异常:

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

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

new File(folder,fileName) that I tried failed

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

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

  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 是已部署代码的一部分,它也不会被调用,因为 URL 将在到达 [ 之前被 Web 服务器拦截=25=]。例如,如果您上传的图像文件夹在您的开发环境中是 C:\images,则可以使用 (2) 中的技术将其作为 /images/* 由 servlet 提供。当部署到服务器时,Web 服务器可以配置为从 /srv/content/images 服务 /images/*,并且此请求永远不会到达 Tomcat。