我有应用程序有很多PDF文件,当我尝试构建我的应用程序的war文件时,由于pdfs的大小转换为Gbz,所以基本上我想从应用程序中删除pdf文件夹,把它放一些位置然后构建一个war文件并将其部署到tomcat.so,有什么方法可以从我的应用程序中读取war文件之外的文件夹吗?
答案 0 :(得分:2)
您需要在服务器上有一个separe文件夹来存储pdf。您将此文件夹位置传递给应用程序(例如,在server.xml中使用globaresouces,因此您的生产路径和本地路径来自服务器而不是应用程序中的硬编码)。您通常从java(新文件(dir),Paths.get ...)访问给定文件夹。如果没有SecurityManager,您可以从webapp中访问文件系统的任何部分。
例如您的应用程序META-INF / context.xml
<Context>
<ResourceLink global="PDFPath" name="PDFPath" type="java.lang.String"/>
</Context>
你的tomcat,在server.xml里面
<GlobalNamingResources>
<Environment name="PDFPath" value="D:\\Data\\PDFs" type="java.lang.String" override="false"/>
</GlobalNamingResources>
在您的代码中:
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
String storagePath = (String) getContext().lookup("PDFPath");
File pdfDir = new File(storagePath);
答案 1 :(得分:2)
您可以使用File类来处理本地文件系统上的文件和目录。
例如,如果您的pdf文件位于名为pdf的文件夹中,您可以创建一个类似的File对象
File pdfsFolder = new File("\pdfs");
答案 2 :(得分:0)
是一种正确的方法,但是授予Tomcat用户访问Pdf文件的权限,当直接通过网址访问Ex(www.yourSite.com/pdf/ex.pdf)时,该文件可避免文件列表出现