T.M. SoftStudio

feci quod potui, faciant meliora potentes

Google App Engine: Загрузка изображения из хранилища Blobstore

 

В данной статье показывается пример кода загрузки изображения из Java-сервлета на страницу веб браузера и сохранения изображения на компьютер.

 

Для загрузки изображения на страницу браузера код сервлета:

import java.io.IOException;

import java.io.OutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

import com.google.appengine.api.blobstore.BlobInfo;

import com.google.appengine.api.blobstore.BlobInfoFactory;

import com.google.appengine.api.blobstore.BlobKey;

import com.google.appengine.api.blobstore.BlobstoreInputStream;

@SuppressWarnings("serial")

public class GetImageServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp)

throws IOException {

BlobInfoFactory bf=new BlobInfoFactory();

BlobKey blobkey=new BlobKey((String)req.getParameter("blobkey"));

BlobInfo bi=bf.loadBlobInfo(blobkey);

resp.setContentType(bi.getContentType());

resp.setContentLength((int)bi.getSize());

OutputStream out = resp.getOutputStream();

BlobstoreInputStream is=new BlobstoreInputStream(blobkey);

byte[] bytes = IOUtils.toByteArray(is);

is.close();

out.write(bytes);

out.flush();

out.close();

}}

Для загрузки изображения на компьютер код сервлета:

import java.io.*;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

import com.google.appengine.api.blobstore.*;

@SuppressWarnings("serial")

public class LoadImageServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp)

throws IOException {

BlobInfoFactory bf=new BlobInfoFactory();

BlobKey blobkey=new BlobKey((String)req.getParameter("blobkey"));

BlobInfo bi=bf.loadBlobInfo(blobkey);

resp.setContentType(bi.getContentType());

resp.setHeader("Content-Disposition", "attachment" );

resp.setContentLength((int)bi.getSize());

OutputStream out = resp.getOutputStream();

BlobstoreInputStream is=new BlobstoreInputStream(blobkey);

byte[] bytes = IOUtils.toByteArray(is);

is.close();

out.write(bytes);

out.flush();

out.close();

}}