В данной статье показывается пример кода загрузки изображения из 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();
}}