java - 我应该将用户上传的文件保存在服务器的什么位置?

标签 java html tomcat

在我的网站上;用户可以上传他们的照片。我正在将 tomcat 与 apache、hibernate、jpa 一起使用。

我更愿意将这些图像保存在某个位置,例如 /var/ImagesUploaded在我的 ubuntu 盒子上。使用 Java,我可以在目录 /var/ImagesUploaded 中引用这些文件使用 java.io但是我如何在 HTML 页面上向用户显示这些图像呢?在 HTML 文件上,我们需要像 <img src=''> 这样的标签这个 src 是相对于 webapp 的。那么,是不是我必须只将用户上传的图像保存在我的网络应用程序中!或者有更好的解决方案吗?

最佳答案

如何在您的应用程序中读取图像,然后将它们作为 base64 编码流提供给您的用户?这样,您就不必将您的图片目录暴露在网络上,并且可以有效地防止它被机器人抓取。

  1. InputStream 形式读取文件在您的应用程序中使用 java.io
  2. 使用 Apache Commons Codec 将其转换为 Base64 . encodeBase64URLSafeString(IOUtils.toByteArray(yourImageAsInputStream);
  3. 在您的响应 HTML 中,将图像嵌入为 <img src="data:image/jpeg;base64,encodedString">

This在 SO 上发帖也可能有用。

关于java - 我应该将用户上传的文件保存在服务器的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760191/

相关文章:

java - RenderScript 支持库出现 IllegalAccessError

java - 查找 int x 是否在最近百位的 10 以内

javascript - 覆盖 html5 验证

Java 网络应用程序 : Global application scope object

java - AutoCommit 不适用于 jOOQ 2.6.1 和 Tomcat 池

java - Spring 启动 : config in "additional-location" was overrided by "application-{profile}"

java - 为什么我的查询性能急剧下降?

javascript - Highcharts - 标签中的 HTML

javascript - 如何获取元素边框的计算宽度?

tomcat Jersey servlet 初始化