ParseUpload parses the synthetic POST request that your app gets from
App Engine after a user's successful upload of blobs. Given the request,
ParseUpload returns a map of the blobs received (keyed by HTML form
element name) and other non-blob POST parameters.
Send sets the headers on response to instruct App Engine to send a blob as
the response body. This is more efficient than reading and writing it out
manually and isn't subject to normal response size limits.
UploadURL creates an upload URL for the form that the user will
fill out, passing the application path to load when the POST of the
form is completed. These URLs expire and should not be reused. The
opts parameter may be nil.
BlobInfo
typeBlobInfostruct{BlobKeyappengine.BlobKeyContentTypestring`datastore:"content_type"`CreationTimetime.Time`datastore:"creation"`Filenamestring`datastore:"filename"`Sizeint64`datastore:"size"`MD5string`datastore:"md5_hash"`// ObjectName is the Google Cloud Storage name for this blob.ObjectNamestring`datastore:"gs_object_name"`}
BlobInfo is the blob metadata that is stored in the datastore.
Filename may be empty.
NewReader returns a reader for a blob. It always succeeds; if the blob does
not exist then an error will be reported upon first read.
UploadURLOptions
typeUploadURLOptionsstruct{MaxUploadBytesint64// optionalMaxUploadBytesPerBlobint64// optional// StorageBucket specifies the Google Cloud Storage bucket in which// to store the blob.// This is required if you use Cloud Storage instead of Blobstore.// Your application must have permission to write to the bucket.// You may optionally specify a bucket name and path in the format// "bucket_name/path", in which case the included path will be the// prefix of the uploaded object's name.StorageBucketstring}
UploadURLOptions are the options to create an upload URL.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[],null,["# Package google.golang.org/appengine/v2/blobstore (v2.0.6)\n\n**Note:** To get more information about this package, such as access to older versions, view [this package on pkg.go.dev](https://pkg.go.dev/google.golang.org/appengine/v2/blobstore). \n\u003cbr /\u003e\n\nPackage blobstore provides a client for App Engine's persistent blob\nstorage service. \n\nFunctions\n---------\n\n### func BlobKeyForFile\n\n func BlobKeyForFile(c https://pkg.go.dev/context.https://pkg.go.dev/context#Context, filename https://pkg.go.dev/builtin#string) (https://pkg.go.dev/google.golang.org/appengine/v2.https://pkg.go.dev/google.golang.org/appengine/v2#BlobKey, https://pkg.go.dev/builtin#error)\n\nBlobKeyForFile returns a BlobKey for a Google Storage file.\nThe filename should be of the form \"/gs/bucket_name/object_name\". \n\n### func Delete\n\n func Delete(c https://pkg.go.dev/context.https://pkg.go.dev/context#Context, blobKey https://pkg.go.dev/google.golang.org/appengine/v2.https://pkg.go.dev/google.golang.org/appengine/v2#BlobKey) https://pkg.go.dev/builtin#error\n\nDelete deletes a blob. \n\n### func DeleteMulti\n\n func DeleteMulti(c https://pkg.go.dev/context.https://pkg.go.dev/context#Context, blobKey []https://pkg.go.dev/google.golang.org/appengine/v2.https://pkg.go.dev/google.golang.org/appengine/v2#BlobKey) https://pkg.go.dev/builtin#error\n\nDeleteMulti deletes multiple blobs. \n\n### func ParseUpload\n\n func ParseUpload(req *https://pkg.go.dev/net/http.https://pkg.go.dev/net/http#Request) (blobs map[https://pkg.go.dev/builtin#string][]*#google_golang_org_appengine_v2_blobstore_BlobInfo, other https://pkg.go.dev/net/url.https://pkg.go.dev/net/url#Values, err https://pkg.go.dev/builtin#error)\n\nParseUpload parses the synthetic POST request that your app gets from\nApp Engine after a user's successful upload of blobs. Given the request,\nParseUpload returns a map of the blobs received (keyed by HTML form\nelement name) and other non-blob POST parameters. \n\n### func Send\n\n func Send(response https://pkg.go.dev/net/http.https://pkg.go.dev/net/http#ResponseWriter, blobKey https://pkg.go.dev/google.golang.org/appengine/v2.https://pkg.go.dev/google.golang.org/appengine/v2#BlobKey)\n\nSend sets the headers on response to instruct App Engine to send a blob as\nthe response body. This is more efficient than reading and writing it out\nmanually and isn't subject to normal response size limits. \n\n### func UploadURL\n\n func UploadURL(c https://pkg.go.dev/context.https://pkg.go.dev/context#Context, successPath https://pkg.go.dev/builtin#string, opts *#google_golang_org_appengine_v2_blobstore_UploadURLOptions) (*https://pkg.go.dev/net/url.https://pkg.go.dev/net/url#URL, https://pkg.go.dev/builtin#error)\n\nUploadURL creates an upload URL for the form that the user will\nfill out, passing the application path to load when the POST of the\nform is completed. These URLs expire and should not be reused. The\nopts parameter may be nil. \n\nBlobInfo\n--------\n\n type BlobInfo struct {\n \tBlobKey appengine.BlobKey\n \tContentType https://pkg.go.dev/builtin#string `datastore:\"content_type\"`\n \tCreationTime https://pkg.go.dev/time.https://pkg.go.dev/time#Time `datastore:\"creation\"`\n \tFilename https://pkg.go.dev/builtin#string `datastore:\"filename\"`\n \tSize https://pkg.go.dev/builtin#int64 `datastore:\"size\"`\n \tMD5 https://pkg.go.dev/builtin#string `datastore:\"md5_hash\"`\n\n \t// ObjectName is the Google Cloud Storage name for this blob.\n \tObjectName https://pkg.go.dev/builtin#string `datastore:\"gs_object_name\"`\n }\n\nBlobInfo is the blob metadata that is stored in the datastore.\nFilename may be empty. \n\n### func Stat\n\n func Stat(c https://pkg.go.dev/context.https://pkg.go.dev/context#Context, blobKey https://pkg.go.dev/google.golang.org/appengine/v2.https://pkg.go.dev/google.golang.org/appengine/v2#BlobKey) (*#google_golang_org_appengine_v2_blobstore_BlobInfo, https://pkg.go.dev/builtin#error)\n\nStat returns the BlobInfo for a provided blobKey. If no blob was found for\nthat key, Stat returns datastore.ErrNoSuchEntity. \n\nReader\n------\n\n type Reader interface {\n \thttps://pkg.go.dev/io.https://pkg.go.dev/io#Reader\n \thttps://pkg.go.dev/io.https://pkg.go.dev/io#ReaderAt\n \thttps://pkg.go.dev/io.https://pkg.go.dev/io#Seeker\n }\n\nReader is a blob reader. \n\n### func NewReader\n\n func NewReader(c https://pkg.go.dev/context.https://pkg.go.dev/context#Context, blobKey https://pkg.go.dev/google.golang.org/appengine/v2.https://pkg.go.dev/google.golang.org/appengine/v2#BlobKey) #google_golang_org_appengine_v2_blobstore_Reader\n\nNewReader returns a reader for a blob. It always succeeds; if the blob does\nnot exist then an error will be reported upon first read. \n\nUploadURLOptions\n----------------\n\n type UploadURLOptions struct {\n \tMaxUploadBytes https://pkg.go.dev/builtin#int64 // optional\n \tMaxUploadBytesPerBlob https://pkg.go.dev/builtin#int64 // optional\n\n \t// StorageBucket specifies the Google Cloud Storage bucket in which\n \t// to store the blob.\n \t// This is required if you use Cloud Storage instead of Blobstore.\n \t// Your application must have permission to write to the bucket.\n \t// You may optionally specify a bucket name and path in the format\n \t// \"bucket_name/path\", in which case the included path will be the\n \t// prefix of the uploaded object's name.\n \tStorageBucket https://pkg.go.dev/builtin#string\n }\n\nUploadURLOptions are the options to create an upload URL."]]