在哪里上传 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 的项目文件夹中也是错误的,但我还有什么其他选择?
最终,该项目将被部署到服务器上。因此,存在三个不同的问题:
- 上传的用户内容位置:图像等内容应上传到您的网络应用程序(项目)之外的文件夹中。 Web 应用程序(项目)中的图像应该是应用程序所必需的并且由开发者提供的图像,而不是用户生成的图像。
- 在 Eclipse 中,在开发和测试期间,您将希望通过 Tomcat 提供这些图像。有很多方法可以做到这一点。 Tomcat 配置可能不是最好的 - 请阅读此处的答案和讨论:Simplest way to serve static data from outside the application server in a Java web application
- 一旦将应用程序部署到服务器,Tomcat 很可能会 运行 在 Apache 或 Nginx 等 Web 服务器后面。在这种情况下,Web 服务器可以直接提供外部图像文件夹及其包含的文件。即使您在 (2) 中实现了一个用于使用 Eclipse 进行本地测试的 servlet,并且该 servlet 是已部署代码的一部分,它也不会被调用,因为 URL 将在到达 [ 之前被 Web 服务器拦截=25=]。例如,如果您上传的图像文件夹在您的开发环境中是
C:\images
,则可以使用 (2) 中的技术将其作为 /images/*
由 servlet 提供。当部署到服务器时,Web 服务器可以配置为从 /srv/content/images
服务 /images/*
,并且此请求永远不会到达 Tomcat。
嗯,我正在 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 的项目文件夹中也是错误的,但我还有什么其他选择?
最终,该项目将被部署到服务器上。因此,存在三个不同的问题:
- 上传的用户内容位置:图像等内容应上传到您的网络应用程序(项目)之外的文件夹中。 Web 应用程序(项目)中的图像应该是应用程序所必需的并且由开发者提供的图像,而不是用户生成的图像。
- 在 Eclipse 中,在开发和测试期间,您将希望通过 Tomcat 提供这些图像。有很多方法可以做到这一点。 Tomcat 配置可能不是最好的 - 请阅读此处的答案和讨论:Simplest way to serve static data from outside the application server in a Java web application
- 一旦将应用程序部署到服务器,Tomcat 很可能会 运行 在 Apache 或 Nginx 等 Web 服务器后面。在这种情况下,Web 服务器可以直接提供外部图像文件夹及其包含的文件。即使您在 (2) 中实现了一个用于使用 Eclipse 进行本地测试的 servlet,并且该 servlet 是已部署代码的一部分,它也不会被调用,因为 URL 将在到达 [ 之前被 Web 服务器拦截=25=]。例如,如果您上传的图像文件夹在您的开发环境中是
C:\images
,则可以使用 (2) 中的技术将其作为/images/*
由 servlet 提供。当部署到服务器时,Web 服务器可以配置为从/srv/content/images
服务/images/*
,并且此请求永远不会到达 Tomcat。