Class ResumableUpload
Media upload which uses Google's resumable media upload protocol to upload data.
Inherited Members
Namespace: Google.Apis.Upload
Assembly: Google.Apis.dll
Syntax
public abstract class ResumableUpload
Remarks
See: https://developers.google.com/drive/manage-uploads#resumable for more information on the protocol.
Constructors
ResumableUpload(Stream, ResumableUploadOptions)
Creates a ResumableUpload instance.
Declaration
protected ResumableUpload(Stream contentStream, ResumableUploadOptions options)
Parameters
Type | Name | Description |
---|---|---|
Stream | contentStream | The data to be uploaded. Must not be null. |
ResumableUploadOptions | options | The options for the upload operation. May be null. |
Fields
DefaultChunkSize
Default chunk size. Default value is 10*MB.
Declaration
public const int DefaultChunkSize = 10485760
Field Value
Type | Description |
---|---|
int |
MinimumChunkSize
Minimum chunk size (except the last one). Default value is 256*KB.
Declaration
public const int MinimumChunkSize = 262144
Field Value
Type | Description |
---|---|
int |
chunkSize
Change this value ONLY for testing purposes!
Declaration
protected int chunkSize
Field Value
Type | Description |
---|---|
int |
Properties
ChunkSize
Gets or sets the size of each chunk sent to the server. Chunks (except the last chunk) must be a multiple of MinimumChunkSize to be compatible with Google upload servers.
Declaration
public int ChunkSize { get; set; }
Property Value
Type | Description |
---|---|
int |
ContentStream
Gets or sets the stream to upload.
Declaration
public Stream ContentStream { get; }
Property Value
Type | Description |
---|---|
Stream |
Options
Gets the options used to control the resumable upload.
Declaration
protected ResumableUploadOptions Options { get; }
Property Value
Type | Description |
---|---|
ResumableUploadOptions |
UploadStreamInterceptor
Interceptor used to propagate data successfully uploaded on each chunk.
Declaration
public StreamInterceptor UploadStreamInterceptor { get; set; }
Property Value
Type | Description |
---|---|
StreamInterceptor |
Methods
CreateFromUploadUri(Uri, Stream, ResumableUploadOptions)
Creates a ResumableUpload instance for a resumable upload session which has already been initiated.
Declaration
public static ResumableUpload CreateFromUploadUri(Uri uploadUri, Stream contentStream, ResumableUploadOptions options = null)
Parameters
Type | Name | Description |
---|---|---|
Uri | uploadUri | The session URI of the resumable upload session. Must not be null. |
Stream | contentStream | The data to be uploaded. Must not be null. |
ResumableUploadOptions | options | The options for the upload operation. May be null. |
Returns
Type | Description |
---|---|
ResumableUpload | The instance which can be used to upload the specified content. |
Remarks
See https://cloud.google.com/storage/docs/json_api/v1/how-tos/resumable-upload#start-resumable for more information about initiating resumable upload sessions and saving the session URI, or upload URI.
ExceptionForResponseAsync(HttpResponseMessage)
Creates a Google.GoogleApiException instance using the error response from the server.
Declaration
protected Task<GoogleApiException> ExceptionForResponseAsync(HttpResponseMessage response)
Parameters
Type | Name | Description |
---|---|---|
HttpResponseMessage | response | The error response. |
Returns
Type | Description |
---|---|
Task<GoogleApiException> | An exception which can be thrown by the caller. |
GetProgress()
Get the current progress state.
Declaration
public IUploadProgress GetProgress()
Returns
Type | Description |
---|---|
IUploadProgress | An IUploadProgress describing the current progress of the upload. |
See Also
InitiateSessionAsync(CancellationToken)
Initiates the resumable upload session and returns the session URI, or upload URI. See https://developers.google.com/drive/manage-uploads#start-resumable and https://cloud.google.com/storage/docs/json_api/v1/how-tos/resumable-upload#start-resumable for more information.
Declaration
public abstract Task<Uri> InitiateSessionAsync(CancellationToken cancellationToken = default)
Parameters
Type | Name | Description |
---|---|---|
CancellationToken | cancellationToken | The token to monitor for cancellation requests. |
Returns
Type | Description |
---|---|
Task<Uri> | The task containing the session URI to use for the resumable upload. |
ProcessResponse(HttpResponseMessage)
Process a response from the final upload chunk call.
Declaration
protected virtual void ProcessResponse(HttpResponseMessage httpResponse)
Parameters
Type | Name | Description |
---|---|---|
HttpResponseMessage | httpResponse | The response body from the final uploaded chunk. |
Resume()
Resumes the upload from the last point it was interrupted. Use when resuming and the program was not restarted.
Declaration
public IUploadProgress Resume()
Returns
Type | Description |
---|---|
IUploadProgress |
Resume(Uri)
Resumes the upload from the last point it was interrupted. Use when the program was restarted and you wish to resume the upload that was in progress when the program was halted. Implemented only for ContentStreams where .CanSeek is True.
Declaration
public IUploadProgress Resume(Uri uploadUri)
Parameters
Type | Name | Description |
---|---|---|
Uri | uploadUri | VideosResource.InsertMediaUpload UploadUri property value that was saved to persistent storage during a prior execution. |
Returns
Type | Description |
---|---|
IUploadProgress |
Remarks
In your application's UploadSessionData Event Handler, store UploadUri.AbsoluteUri property value (resumable session URI string value) to persistent storage for use with Resume() or ResumeAsync() upon a program restart. It is strongly recommended that the FullPathFilename of the media file that is being uploaded is saved also so that a subsequent execution of the program can compare the saved FullPathFilename value to the FullPathFilename of the media file that it has opened for uploading. You do not need to seek to restart point in the ContentStream file.
ResumeAsync()
Asynchronously resumes the upload from the last point it was interrupted.
Declaration
public Task<IUploadProgress> ResumeAsync()
Returns
Type | Description |
---|---|
Task<IUploadProgress> |
Remarks
You do not need to seek to restart point in the ContentStream file.
ResumeAsync(CancellationToken)
Asynchronously resumes the upload from the last point it was interrupted. Use when resuming and the program was not restarted.
Declaration
public Task<IUploadProgress> ResumeAsync(CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
CancellationToken | cancellationToken | A cancellation token to cancel the asynchronous operation. |
Returns
Type | Description |
---|---|
Task<IUploadProgress> |
Remarks
You do not need to seek to restart point in the ContentStream file.
ResumeAsync(Uri)
Asynchronously resumes the upload from the last point it was interrupted. Use when resuming and the program was restarted. Implemented only for ContentStreams where .CanSeek is True.
Declaration
public Task<IUploadProgress> ResumeAsync(Uri uploadUri)
Parameters
Type | Name | Description |
---|---|---|
Uri | uploadUri | VideosResource.InsertMediaUpload UploadUri property value that was saved to persistent storage during a prior execution. |
Returns
Type | Description |
---|---|
Task<IUploadProgress> |
Remarks
In your application's UploadSessionData Event Handler, store UploadUri.AbsoluteUri property value (resumable session URI string value) to persistent storage for use with Resume() or ResumeAsync() upon a program restart. It is strongly recommended that the FullPathFilename of the media file that is being uploaded is saved also so that a subsequent execution of the program can compare the saved FullPathFilename value to the FullPathFilename of the media file that it has opened for uploading. You do not need to seek to restart point in the ContentStream file.
ResumeAsync(Uri, CancellationToken)
Asynchronously resumes the upload from the last point it was interrupted. Use when the program was restarted and you wish to resume the upload that was in progress when the program was halted. Implemented only for ContentStreams where .CanSeek is True.
Declaration
public Task<IUploadProgress> ResumeAsync(Uri uploadUri, CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
Uri | uploadUri | VideosResource.InsertMediaUpload UploadUri property value that was saved to persistent storage during a prior execution. |
CancellationToken | cancellationToken | A cancellation token to cancel the asynchronous operation. |
Returns
Type | Description |
---|---|
Task<IUploadProgress> |
Remarks
In your application's UploadSessionData Event Handler, store UploadUri.AbsoluteUri property value (resumable session URI string value) to persistent storage for use with Resume() or ResumeAsync() upon a program restart. It is strongly recommended that the FullPathFilename of the media file that is being uploaded is saved also so that a subsequent execution of the program can compare the saved FullPathFilename value to the FullPathFilename of the media file that it has opened for uploading. You do not need to seek to restart point in the ContentStream file.
SendNextChunkAsync(Stream, CancellationToken)
Uploads the next chunk of data to the server.
Declaration
protected Task<bool> SendNextChunkAsync(Stream stream, CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
Stream | stream | |
CancellationToken | cancellationToken |
Returns
Type | Description |
---|---|
Task<bool> |
|
Upload()
Uploads the content to the server. This method is synchronous and will block until the upload is completed.
Declaration
public IUploadProgress Upload()
Returns
Type | Description |
---|---|
IUploadProgress |
Remarks
In case the upload fails the Exception will contain the exception that cause the failure.
UploadAsync()
Uploads the content asynchronously to the server.
Declaration
public Task<IUploadProgress> UploadAsync()
Returns
Type | Description |
---|---|
Task<IUploadProgress> |
UploadAsync(CancellationToken)
Uploads the content to the server using the given cancellation token.
Declaration
public Task<IUploadProgress> UploadAsync(CancellationToken cancellationToken)
Parameters
Type | Name | Description |
---|---|---|
CancellationToken | cancellationToken | A cancellation token to cancel operation. |
Returns
Type | Description |
---|---|
Task<IUploadProgress> |
Remarks
In case the upload fails Exception will contain the exception that cause the failure. The only exception which will be thrown is TaskCanceledException which indicates that the task was canceled.
Events
ProgressChanged
Event called whenever the progress of the upload changes.
Declaration
public event Action<IUploadProgress> ProgressChanged
Event Type
Type | Description |
---|---|
Action<IUploadProgress> |
UploadSessionData
Event called when an UploadUri is created. Not needed if the application program will not support resuming after a program restart.
Declaration
public event Action<IUploadSessionData> UploadSessionData
Event Type
Type | Description |
---|---|
Action<IUploadSessionData> |
Remarks
Within the event, persist the UploadUri to storage. It is strongly recommended that the full path filename (or other media identifier) is also stored so that it can be compared to the current open filename (media) upon restart.