В двух словах, поскольку GAE не может записывать в файловую систему, я решил сохранить свои данные в хранилище данных (используя JDO).Теперь я хотел бы получить побайтные данные и передать их клиенту в качестве входного потока.Есть код из библиотеки gwtupload (http://code.google.com/p/gwtupload/) (см. Ниже), который не работает на GAE, потому что он пишет в системную файловую систему. Я хотел бы иметь возможность предоставить решение, портированное GAE.
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();
}
OneОбходной путь, который я пытался (не работал), заключается в получении данных из хранилища данных в виде ресурса, подобного следующему:
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());
}
Я приветствую ваши предложения.
С уважением