Interface BlobstoreService
-
public interface BlobstoreService
BlobstoreService
allows you to manage the creation and serving of large, immutable blobs to users.
-
-
Field Summary
Fields Modifier and Type Field and Description static int
MAX_BLOB_FETCH_SIZE
-
Method Summary
All Methods Instance Methods Abstract Methods Deprecated Methods Modifier and Type Method and Description BlobKey
createGsBlobKey(java.lang.String filename)
Create aBlobKey
for a Google Storage File.java.lang.String
createUploadUrl(java.lang.String successPath)
Create an absolute URL that can be used by a user to asynchronously upload a large blob.java.lang.String
createUploadUrl(java.lang.String successPath, UploadOptions uploadOptions)
Create an absolute URL that can be used by a user to asynchronously upload a large blob.void
delete(BlobKey... blobKeys)
Permanently deletes the specified blobs.byte[]
fetchData(BlobKey blobKey, long startIndex, long endIndex)
Get fragment from specified blob.java.util.Map<java.lang.String,java.util.List<BlobInfo>>
getBlobInfos(HttpServletRequest request)
Returns theBlobInfo
for any files that were uploaded, keyed by the upload form "name" field.ByteRange
getByteRange(HttpServletRequest request)
Get byte range from the request.java.util.Map<java.lang.String,java.util.List<FileInfo>>
getFileInfos(HttpServletRequest request)
Returns theFileInfo
for any files that were uploaded, keyed by the upload form "name" field.java.util.Map<java.lang.String,BlobKey>
getUploadedBlobs(HttpServletRequest request)
Deprecated.UsegetUploads(HttpServletRequest)
instead. Note that getUploadedBlobs does not handle cases where blobs have been uploaded using the multiple="true" attribute of the file input form element.java.util.Map<java.lang.String,java.util.List<BlobKey>>
getUploads(HttpServletRequest request)
Returns theBlobKey
for any files that were uploaded, keyed by the upload form "name" field.void
serve(BlobKey blobKey, ByteRange byteRange, HttpServletResponse response)
Arrange for the specified blob to be served as the response content for the current request.void
serve(BlobKey blobKey, HttpServletResponse response)
Arrange for the specified blob to be served as the response content for the current request.void
serve(BlobKey blobKey, java.lang.String rangeHeader, HttpServletResponse response)
Arrange for the specified blob to be served as the response content for the current request.
-
-
-
Field Detail
-
MAX_BLOB_FETCH_SIZE
static final int MAX_BLOB_FETCH_SIZE
- See Also:
- Constant Field Values
-
-
Method Detail
-
createUploadUrl
java.lang.String createUploadUrl(java.lang.String successPath)
Create an absolute URL that can be used by a user to asynchronously upload a large blob. Upon completion of the upload, a callback is made to the specified URL.- Parameters:
successPath
- A relative URL which will be invoked after the user successfully uploads a blob. Must start with a "/", and must be URL-encoded.- Throws:
java.lang.IllegalArgumentException
- If successPath was not valid.BlobstoreFailureException
- If an error occurred while communicating with the blobstore.
-
createUploadUrl
java.lang.String createUploadUrl(java.lang.String successPath, UploadOptions uploadOptions)
Create an absolute URL that can be used by a user to asynchronously upload a large blob. Upon completion of the upload, a callback is made to the specified URL.- Parameters:
successPath
- A relative URL which will be invoked after the user successfully uploads a blob. Must start with a "/".uploadOptions
- Specific options applicable only for this upload URL.- Throws:
java.lang.IllegalArgumentException
- If successPath was not valid.BlobstoreFailureException
- If an error occurred while communicating with the blobstore.
-
serve
void serve(BlobKey blobKey, HttpServletResponse response) throws java.io.IOException
Arrange for the specified blob to be served as the response content for the current request.response
should be uncommitted before invoking this method, and should be assumed to be committed after invoking it. Any content written before calling this method will be ignored. You may, however, append custom headers before or after calling this method.Range header will be automatically translated from the Content-Range header in the response.
- Parameters:
blobKey
- Blob-key to serve in response.response
- HTTP response object.- Throws:
java.io.IOException
- If an I/O error occurred.java.lang.IllegalStateException
- Ifresponse
was already committed.
-
serve
void serve(BlobKey blobKey, ByteRange byteRange, HttpServletResponse response) throws java.io.IOException
Arrange for the specified blob to be served as the response content for the current request.response
should be uncommitted before invoking this method, and should be assumed to be committed after invoking it. Any content written before calling this method will be ignored. You may, however, append custom headers before or after calling this method.This method will set the App Engine blob range header to serve a byte range of that blob.
- Parameters:
blobKey
- Blob-key to serve in response.byteRange
- Byte range to serve in response.response
- HTTP response object.- Throws:
java.io.IOException
- If an I/O error occurred.java.lang.IllegalStateException
- Ifresponse
was already committed.
-
serve
void serve(BlobKey blobKey, java.lang.String rangeHeader, HttpServletResponse response) throws java.io.IOException
Arrange for the specified blob to be served as the response content for the current request.response
should be uncommitted before invoking this method, and should be assumed to be committed after invoking it. Any content written before calling this method will be ignored. You may, however, append custom headers before or after calling this method.This method will set the App Engine blob range header to the content specified.
- Parameters:
blobKey
- Blob-key to serve in response.rangeHeader
- Content for range header to serve.response
- HTTP response object.- Throws:
java.io.IOException
- If an I/O error occurred.java.lang.IllegalStateException
- Ifresponse
was already committed.
-
getByteRange
ByteRange getByteRange(HttpServletRequest request)
Get byte range from the request.- Parameters:
request
- HTTP request object.- Returns:
- Byte range as parsed from the HTTP range header. null if there is no header.
- Throws:
RangeFormatException
- Unable to parse header because of invalid format.UnsupportedRangeFormatException
- Header is a valid HTTP range header, the specific form is not supported by app engine. This includes unit types other than "bytes" and multiple ranges.
-
delete
void delete(BlobKey... blobKeys)
Permanently deletes the specified blobs. Deleting unknown blobs is a no-op.- Throws:
BlobstoreFailureException
- If an error occurred while communicating with the blobstore.
-
getUploadedBlobs
@Deprecated java.util.Map<java.lang.String,BlobKey> getUploadedBlobs(HttpServletRequest request)
Deprecated. UsegetUploads(HttpServletRequest)
instead. Note that getUploadedBlobs does not handle cases where blobs have been uploaded using the multiple="true" attribute of the file input form element.Returns theBlobKey
for any files that were uploaded, keyed by the upload form "name" field.This method should only be called from within a request served by the destination of a
createUploadUrl
call.- Throws:
java.lang.IllegalStateException
- If not called from a blob upload callback request.
-
getUploads
java.util.Map<java.lang.String,java.util.List<BlobKey>> getUploads(HttpServletRequest request)
Returns theBlobKey
for any files that were uploaded, keyed by the upload form "name" field. This method should only be called from within a request served by the destination of acreateUploadUrl
call.- Throws:
java.lang.IllegalStateException
- If not called from a blob upload callback request.- See Also:
getBlobInfos(HttpServletRequest)
,getFileInfos(HttpServletRequest)
-
getBlobInfos
java.util.Map<java.lang.String,java.util.List<BlobInfo>> getBlobInfos(HttpServletRequest request)
Returns theBlobInfo
for any files that were uploaded, keyed by the upload form "name" field. This method should only be called from within a request served by the destination of acreateUploadUrl
call.- Throws:
java.lang.IllegalStateException
- If not called from a blob upload callback request.- Since:
- 1.7.5
- See Also:
getFileInfos(HttpServletRequest)
,getUploads(HttpServletRequest)
-
getFileInfos
java.util.Map<java.lang.String,java.util.List<FileInfo>> getFileInfos(HttpServletRequest request)
Returns theFileInfo
for any files that were uploaded, keyed by the upload form "name" field. This method should only be called from within a request served by the destination of acreateUploadUrl
call. Prefer this method overgetBlobInfos
orgetUploads
if uploading files to Cloud Storage, as the FileInfo contains the name of the created filename in Cloud Storage.- Throws:
java.lang.IllegalStateException
- If not called from a blob upload callback request.- Since:
- 1.7.5
- See Also:
getBlobInfos(HttpServletRequest)
,getUploads(HttpServletRequest)
-
fetchData
byte[] fetchData(BlobKey blobKey, long startIndex, long endIndex)
Get fragment from specified blob.- Parameters:
blobKey
- Blob-key from which to fetch data.startIndex
- Start index of data to fetch.endIndex
- End index (inclusive) of data to fetch.- Throws:
java.lang.IllegalArgumentException
- If blob not found, indexes are negative, indexes are inverted or fetch size is too large.java.lang.SecurityException
- If the application does not have acces to the blob.BlobstoreFailureException
- If an error occurred while communicating with the blobstore.
-
createGsBlobKey
BlobKey createGsBlobKey(java.lang.String filename)
Create aBlobKey
for a Google Storage File. The existance of the file represented by filename is not checked, hence a BlobKey can be created for a file that does not currently exist. You can safely persist theBlobKey
generated by this function.The created
BlobKey
can then be used as a parameter in API methods that can support objects in Google Storage, for exampleserve
.- Parameters:
filename
- The Google Storage filename. The filename must be in the format "/gs/bucket_name/object_name".- Throws:
java.lang.IllegalArgumentException
- If the filename does not have the prefix "/gs/".
-
-