从 doPost() 方法访问保存在 Servlet 的 WEB-INF 文件夹中的静态文件
Access a static file saved inside the WEB-INF folder of a Servlet from the doPost() method
我正在尝试访问我保存在 src/main/webapp/WEB-INF/imgs
文件夹内的 Servlet 中的一些图像,方法如下:
link
我尝试在 Servlet
的 doPost
方法中使用此代码访问这些图像:
InputStream s = this.getClass().getClassLoader().getResourceAsStream("http://cardimgs.org/imgs/cardbackground1.jpg");
Movie movie = new Movie();
try {
byte[] bytes = IOUtils.toByteArray(s);
movie.setImage(bytes);
} catch (IOException e) {
e.printStackTrace();
}
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
// Store the image in App Engine's datastore
pm.makePersistent(movie);
} finally {
pm.close();
}
Movie
class:
link 2、
我使用指定的 url
来创建 InputStream
的原因是因为在我的 appengine-web.xml
中我有:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>myApplicationId</application>
<version>1</version>
<threadsafe>true</threadsafe>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
</system-properties>
<static-files>
<include path="/**.jpg"/>
<include path="/imgs" >
<http-header name="Access-Control-Allow-Origin" value="http://cardimgs.org" />
</include>
</static-files>
</appengine-web-app>
我尝试定义我的静态文件的地方。
我的问题是,不过,使用上面的代码我无法访问我的文件并填写 InputStream
,这似乎是 null
,因此返回 NullPointerException
.
如何才能成功访问我的静态文件?
ClassLoader.getResourceAsStream()
使用*class 加载器** 加载资源。因此它会在 class 路径 中寻找它们。网络应用程序的 class 路径由 WEB-INF/classes
和 WEB-INF/lib
中的所有 jar 组成。它期望的路径类似于 com/mycompany/myproject/somefile.txt。它不能是 HTTP URL。
你需要的是ServletContext.getResourceAsStream("/WEB-INF/imgs/cardbackground1.jpg")
。此方法从网络应用程序内的任何位置加载资源。
我正在尝试访问我保存在 src/main/webapp/WEB-INF/imgs
文件夹内的 Servlet 中的一些图像,方法如下:
link
我尝试在 Servlet
的 doPost
方法中使用此代码访问这些图像:
InputStream s = this.getClass().getClassLoader().getResourceAsStream("http://cardimgs.org/imgs/cardbackground1.jpg");
Movie movie = new Movie();
try {
byte[] bytes = IOUtils.toByteArray(s);
movie.setImage(bytes);
} catch (IOException e) {
e.printStackTrace();
}
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
// Store the image in App Engine's datastore
pm.makePersistent(movie);
} finally {
pm.close();
}
Movie
class:
link 2、
我使用指定的 url
来创建 InputStream
的原因是因为在我的 appengine-web.xml
中我有:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>myApplicationId</application>
<version>1</version>
<threadsafe>true</threadsafe>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
</system-properties>
<static-files>
<include path="/**.jpg"/>
<include path="/imgs" >
<http-header name="Access-Control-Allow-Origin" value="http://cardimgs.org" />
</include>
</static-files>
</appengine-web-app>
我尝试定义我的静态文件的地方。
我的问题是,不过,使用上面的代码我无法访问我的文件并填写 InputStream
,这似乎是 null
,因此返回 NullPointerException
.
如何才能成功访问我的静态文件?
ClassLoader.getResourceAsStream()
使用*class 加载器** 加载资源。因此它会在 class 路径 中寻找它们。网络应用程序的 class 路径由 WEB-INF/classes
和 WEB-INF/lib
中的所有 jar 组成。它期望的路径类似于 com/mycompany/myproject/somefile.txt。它不能是 HTTP URL。
你需要的是ServletContext.getResourceAsStream("/WEB-INF/imgs/cardbackground1.jpg")
。此方法从网络应用程序内的任何位置加载资源。