【问题标题】:Save the PDF file generated in servlet to a directory on the computer [closed]将servlet中生成的PDF文件保存到计算机上的目录[关闭]
【发布时间】:2013-09-05 16:13:13
【问题描述】:

Generate PDF file in an appropriate format我在这里询问如何在其响应中提示保存 PDF。

现在我想让文件保存在容器文件系统上的预定目录中(比如 Windows 上的 D:\pdf)。因此,如果我理解正确而不是 ServletOutputStream,我将需要一个 FileOutputStream。

所以我认为我需要绕过写入 ServletOutputStream 并使用文件 IO。你觉得我的方法怎么样?任何建议都会非常感激!

编辑:我对流的工作方式有点困惑。一般来说,关于服务器的本地文件系统。无论如何,我很感激你对我的态度,让我的困惑消失

【问题讨论】:

  • Servlet 可以写入流;这就是它所能做的。保存到目录是用户的选择。
  • 这意味着不能在servlet代码中存储文件?

标签: java servlets pdf file-io


【解决方案1】:

您无法控制它在用户计算机上的保存位置。想象一个 servlet 将文件写入系统目录并覆盖系统文件。

FileFooStream 将写入服务器的本地磁盘。只要服务器允许文件访问(App Engine 不允许),它应该可以正常工作,并且将类似于桌面应用程序进行写入。

【讨论】:

  • 我在我的帖子中指的是服务器的本地磁盘。将编辑
  • 那么这个问题就很奇怪了,因为它在 servlet 中与在“常规”Java 类中的操作完全没有区别。
【解决方案2】:

据我所知,您无法通过网络程序操作客户端目录。这就是浏览器的安全性出现的地方; JVM 沙箱也不允许任何带有可疑活动的小程序执行。

另一种方法是让客户决定如何处理 pdf 文件。为此,您可以使用以下步骤:

  1. 在响应标头中使用 Mime 类型告诉浏览器您将在输出流上编写 PDF。
  2. 浏览器会接受您的字节并尝试使用 Adob​​e PDF 阅读器(内置于浏览器中)等插件来显示它。
  3. 如果浏览器有插件,它会让用户决定如何处理这个文件(保存/打开提示)。
  4. 然后用户可以决定如何打开 PDF 文件。

您可以从 this post 获得有关如何执行此操作的线索。

【讨论】:

    【解决方案3】:

    看看这个问题,我猜你对 Servlet 的工作方式有点困惑。

    请参见 servlet 是在服务器端的 JVM 上执行的 Java 类。您从请求中获得的内容和设置到响应中的内容是您与底层 HTTP 服务器进行通信的一种方式,该服务器最终将使用您的请求和响应中的属性来生成文本,并将其传输到客户端浏览器。

    因此,您将在 Servlet 中创建的文件输入/输出流将使您能够访问正在执行该 servlet 的机器的目录。在这里它将在您的服务器上执行。因此,您充其量可以控制,应使用文件输入/输出流将传入文件保存在服务器上的位置,但您无法使用 Servlet 访问客户端计算机目录。

    附:我没有考虑将小程序发送到浏览器的可能性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 2023-03-29
      • 2016-09-07
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多