何度やっても同じ

ただの日記

GAEJ Blobstoreのでっかいファイルをダウンロード

BlobstoreService blobstore = BlobstoreServiceFactory.getBlobstoreService();
BlobKey key = new BlobKey(asString("key"));
response.setHeader("Content-disposition", "attachment; filename=hogehoge");
blobstore.serve(key, response);

何か理由があって自分でがんばるときは。

BlobKey key = new BlobKey(asString("key"));
BlobInfo info = new BlobInfoFactory().loadBlobInfo(key);
int size = (int) info.getSize();

response.setContentType(info.getContentType());
response.setContentLength(size);
response.setHeader("Content-disposition", "attachment; filename=" + info.getFilename());

BlobstoreService blobstore = BlobstoreServiceFactory.getBlobstoreService();
int start = 0;

do {
  int end = Math.min(size, start + BlobstoreService.MAX_BLOB_FETCH_SIZE) - 1;
  byte[] buf = blobstore.fetchData(key, start, end);
  response.getOutputStream().write(buf);
  start = end + 1;
} while (start < size);
        
response.flushBuffer();