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();