Проблема с обслуживанием больших двоичных объектов в GAE

В настоящее время я создаю веб-приложение, которое позволяет пользователям загружать контент через blobstore, а затем загружать его.

Однако сервлет, который занимается загрузкой, называется BlobServiceServlet, и всякий раз, когда пользователь загружает большой двоичный объект, имя файла изменяется на «BlobServiceServlet», а расширение также иногда меняется на .bin. Кто-нибудь знает, как решить эту проблему?


person fernandohur    schedule 17.09.2011    source источник


Ответы (2)



Просто дополнительная информация. Это код, сообщающий браузеру размер файла:

BlobInfoFactory blobInfoFactory = new BlobInfoFactory(DatastoreServiceFactory.getDatastoreService());
BlobInfo blobInfo = blobInfoFactory.loadBlobInfo(blobKey);
resp.setContentLength(new Long(blobInfo.getSize()).intValue());
resp.setHeader("content-type", blobInfo.getContentType());
resp.setHeader("content-disposition", "attachment;filename=" + blobInfo.getFilename());
blobstoreService.serve(blobKey, resp);

Обратите внимание, что если у вас есть файлы размером более 1 МБ, размер файла не отправляется в браузер. GAE считывает большой двоичный объект по 1 МБ за раз и перезаписывает заголовок размера файла в ответе.

Я нашел всю эту информацию здесь: http://www.mail-archive.com/[email protected]/msg29314.html

person Ena    schedule 09.03.2012