1
简而言之,由于GAE无法写入文件系统,因此我决定将数据保存到数据存储中(使用JDO)。现在,我希望逐字节地检索数据并将其作为输入流传递给客户端。 gwtupload库(http://code.google.com/p/gwtupload/)中有代码(见下文),它在GAE上中断,因为它写入系统文件系统。我希望能够提供一个GAE移植解决方案。如何从appengine数据存储中逐字节读取实体对象
public static void copyFromInputStreamToOutputStream(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[100000];
while (true) {
synchronized (buffer) {
int amountRead = in.read(buffer);
if (amountRead == -1) {
break;
}
out.write(buffer, 0, amountRead);
}
}
in.close();
out.flush();
out.close();
}
一个解决我已经试过(没有工作)是检索数据存储中的数据作为一个像这样的资源:
InputStream resourceAsStream = null;
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Query q = pm.newQuery(ImageFile.class);
lf = q.execute();
resourceAsStream = getServletContext().getResourceAsStream((String) pm.getObjectById(lf));
} finally {
pm.close();
}
if (lf != null) {
response.setContentType(receivedContentTypes.get(fieldName));
copyFromInputStreamToOutputStream(resourceAsStream, response.getOutputStream());
}
我欢迎您的建议。
问候
您是否试图序列化客户端/服务器之间的POJO? – 2011-04-07 02:58:17
不!我基本上试图将文件上传到GAE,使用GWT作为客户端。在进行上传时,我想逐字节地监视它,如进度条或%读数。 – drecute 2011-04-10 17:37:24