【问题标题】:Where to upload an image/file to make it appear on HTML?在哪里上传图像/文件以使其显示在 HTML 中?
【发布时间】:2018-02-05 02:28:22
【问题描述】:

嗯,我正在 Tomcat 下开发一个 Eclipse 动态 Web 项目。 我正在尝试制作一个 web 应用程序/站点。在 jsp/html 页面中,有一个用户可以上传照片的表单。 然后我从一个 servlet 处理此操作,该 servlet 必须将此图像/文件存储在某处,以便使该图像可以随时出现在网站上。

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

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

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

    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 命令的一行,这意味着

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

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

【问题讨论】:

    标签: java html eclipse jsp nosuchfileexception


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 2021-03-28
      • 1970-01-01
      相关资源
      最近更新 更多