Проблема с обслуживанием капель в GAE - PullRequest
4 голосов
/ 18 сентября 2011

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

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

Ответы [ 2 ]

6 голосов
/ 18 сентября 2011

Добавить заголовок «Content-disposition» к ответу.

См. http://en.wikipedia.org/wiki/MIME#Content-Disposition для примера.

Например, в обработчике

self.response.headers['Content-Disposition'] = 'attachment; filename=foo.doc'
4 голосов
/ 09 марта 2012

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

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 одновременно читает BLOB-объект размером 1 МБ и переписывает заголовок размера файла в ответе.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...