В данной статье приводится пример реализации сохранения изображения в Blobstore-хранилище платформы Google App Engine не из HTML-формы, а из потока данных URL-адреса изображения.

Передаем в сервлет URL-адрес изображения как параметр и записываем в Blobstore-хранилище:
 
if(req.getParameter("urls")!=null){           
 
FileService fileService = FileServiceFactory.getFileService();        
 
String url=req.getParameter("urls");
 
if(!url.equals("")){
 
try{                   
 
URL u = new URL(url);
 
URLConnection uc=u.openConnection();
 
uc.setConnectTimeout(30000);                          
 
String type = uc.getContentType();                            
 
InputStream is=uc.getInputStream();
 
byte[] bytes = IOUtils.toByteArray(is);
 
is.close();
 
                       
 
AppEngineFile file = fileService.createNewBlobFile(type);
 
boolean lock = true;
 
FileWriteChannel writeChannel = fileService.openWriteChannel(file, lock);
 
java.nio.ByteBuffer src=java.nio.ByteBuffer.wrap(bytes);
 
writeChannel.write(src);
 
String path = file.getFullPath();
 
writeChannel.closeFinally();
 
BlobKey blobKey = fileService.getBlobKey(file);                       
 
               
 
Entity UsersImage = new Entity("UsersImage");
 
UsersImage.setProperty("blobKey", blobKey);   
 
UsersImage.setProperty("path", path);
 
UsersImage.setProperty("file_name", url);
 
datastore.put(UsersImage);            
 
}catch(Exception e) {
 
resp.setContentType("text/xml;charset=utf-8");
 
resp.getWriter().println("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");
 
resp.getWriter().println("<response>");
 
resp.getWriter().println("<method>getException</method>");
 
resp.getWriter().println("<result>"+e.getMessage()+": Image do not load, check image and retry</result>");
 
resp.getWriter().println("</response>");
 
}                      
 
}
 
}