How to do file I/O with a servlet running on Tomcat

泪湿孤枕 提交于 2020-01-23 07:32:52

问题


I am writing a Java servlet, using Tomcat as the container, which creates and serves PDF files to the end-user. Currently the PDF files are created in-memory and written out as a response to a POST.

I would like to change this up somewhat so that the PDF files are written to disk (so they can be served up again later). I am having trouble locating a suitable "how-to" for doing this.

How can I configure my servlet to write to and read files from a directory server-side? From what I've read, I think I need to locate this directory somewhere outside where my "exploded webapp" lives in $CATALINA_BASE for security reasons, and I need to use a Context or somesuch.


回答1:


You can just use the usual FileOutputStream and FileInputStream classes to respectively write to and read from the disk. Change your PDF generator to write to FileOutputStream and change your file servlet to read from FileInputStream.

And, indeed, you'd like to store those files outside the webapp, else it will all get lost whenever you redeploy the webapp. You don't need the ServletContext, it's only useful to convert a relative web path to an absolute disk file system path. You don't need it when you're storing it outside the webapp, you namely already know the absolute disk file system path.

See also

  • Java IO tutorial
  • Basic example of FileServlet


来源:https://stackoverflow.com/questions/3444944/how-to-do-file-i-o-with-a-servlet-running-on-tomcat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!