Загрузка GWT GAE через большой двоичный объект

Если я использую виджет GWT File и панель форм, может ли кто-нибудь объяснить, как обрабатывать загрузку в blobstore в движке приложений Google??


person Noor    schedule 29.06.2011    source источник


Ответы (2)


Взгляните на gwtupload. Есть примеры использования с GAE Blobstore.

person Peter Knego    schedule 29.06.2011

Google Blobstore специально разработан для загрузки и обслуживания больших двоичных объектов через http. Служба Blobstore (полученная с помощью BlobstoreServiceFactory.getBlobstoreService()) создает действие http post, которое вы можете использовать в форме html. Отправляя на него файл, вы загружаете свой большой двоичный объект в хранилище больших двоичных объектов. Когда вы создаете это действие, вы указываете путь к обработчику (сервлету), где у вас есть доступ к загруженному ключу большого двоичного объекта:

Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
BlobKey blobKey = blobs.get("data");

Обратите внимание, что «данные» — это поле файла в вашей форме. Все, что у вас есть, это ключ к блобу (вашему файлу). Отсюда вы берете на себя управление — вы можете сохранить этот ключ на потом и/или сразу же отправить большой двоичный объект на страницу (используя ключ):

BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
blobstoreService.serve(blobKey, res);

Конечно, подробности см. в документации Google.

Одна приятная особенность хранилища BLOB-объектов заключается в том, что он интегрирован со службой Google Mapper (рудиментарная карта-уменьшение) (в разработке), которая позволяет обрабатывать файлы, загруженные в виде BLOB-объектов, построчно: http://ikaisays.com/2010

person topchef    schedule 29.06.2011
comment
На стороне клиента, что я должен установить для действия формы - person Noor; 30.06.2011
comment
форма будет выглядеть так: String uploadUrl = blobstoreService.createUploadUrl("/upload"); out.println("<form action='" + uploadUrl + "' method='post' enctype='multipart/form-data'>"); где /upload — это сопоставление с моим сервлетом, который обрабатывает вещи после сохранения большого двоичного объекта в blobstore (1-й фрагмент кода в ответе). - person topchef; 30.06.2011
comment
Я использую загрузку GWT GAE, она успешно загружается, давая мне servlet.gupld?blob-key=lSPbUItHU2v6jKhMUrcF7gDQUlofRktEPkocaPpO2Y4wwOQwd1-Tt51HUpDom3HPKAix3xxMbUD3eFnpQoLVIvXwYuJ_i7EU30RCTVwRJf_fvg, но когда я устанавливаю файл, не используя - person Noor; 30.06.2011