docs-devsite/storage.uploadtask.md
Project: /docs/reference/js/_project.yaml Book: /docs/reference/_book.yaml page_type: reference
{% comment %} DO NOT EDIT THIS FILE! This is generated by the JS SDK team, and any local changes will be overwritten. Changes should be made in the source code at https://github.com/firebase/firebase-js-sdk {% endcomment %}
Represents the process of uploading an object. Allows you to monitor and manage the upload.
<b>Signature:</b>
export interface UploadTask
| Property | Type | Description |
|---|---|---|
| snapshot | UploadTaskSnapshot | A snapshot of the current task state. |
| Method | Description |
|---|---|
| cancel() | Cancels a running task. Has no effect on a complete or failed task. |
| catch(onRejected) | Equivalent to calling <code>then(null, onRejected)</code>. |
| on(event, nextOrObserver, error, complete) | Listens for events on this task.<!-- -->Events have three callback functions (referred to as <code>next</code>, <code>error</code>, and <code>complete</code>).<!-- -->If only the event is passed, a function that can be used to register the callbacks is returned. Otherwise, the callbacks are passed after the event.<!-- -->Callbacks can be passed either as three separate arguments <em>or</em> as the <code>next</code>, <code>error</code>, and <code>complete</code> properties of an object. Any of the three callbacks is optional, as long as at least one is specified. In addition, when you add your callbacks, you get a function back. You can call this function to unregister the associated callbacks. |
| pause() | Pauses a currently running task. Has no effect on a paused or failed task. |
| resume() | Resumes a paused task. Has no effect on a currently running or failed task. |
| then(onFulfilled, onRejected) | This object behaves like a Promise, and resolves with its snapshot data when the upload completes. |
A snapshot of the current task state.
<b>Signature:</b>
snapshot: UploadTaskSnapshot;
Cancels a running task. Has no effect on a complete or failed task.
<b>Signature:</b>
cancel(): boolean;
<b>Returns:</b>
boolean
True if the cancel had an effect.
Equivalent to calling then(null, onRejected)<!-- -->.
<b>Signature:</b>
catch(onRejected: (error: StorageError) => unknown): Promise<unknown>;
| Parameter | Type | Description |
|---|---|---|
| onRejected | (error: StorageError<!-- -->) => unknown |
<b>Returns:</b>
Promise<unknown>
Listens for events on this task.
Events have three callback functions (referred to as next<!-- -->, error<!-- -->, and complete<!-- -->).
If only the event is passed, a function that can be used to register the callbacks is returned. Otherwise, the callbacks are passed after the event.
Callbacks can be passed either as three separate arguments <em>or</em> as the next<!-- -->, error<!-- -->, and complete properties of an object. Any of the three callbacks is optional, as long as at least one is specified. In addition, when you add your callbacks, you get a function back. You can call this function to unregister the associated callbacks.
<b>Signature:</b>
on(event: TaskEvent, nextOrObserver?: StorageObserver<UploadTaskSnapshot> | null | ((snapshot: UploadTaskSnapshot) => unknown), error?: ((a: StorageError) => unknown) | null, complete?: Unsubscribe | null): Unsubscribe | Subscribe<UploadTaskSnapshot>;
| Parameter | Type | Description |
|---|---|---|
| event | TaskEvent | The type of event to listen for. |
| nextOrObserver | StorageObserver<!-- --><UploadTaskSnapshot<!-- -->> | null | ((snapshot: UploadTaskSnapshot<!-- -->) => unknown) | The <code>next</code> function, which gets called for each item in the event stream, or an observer object with some or all of these three properties (<code>next</code>, <code>error</code>, <code>complete</code>). |
| error | ((a: StorageError<!-- -->) => unknown) | null | A function that gets called with a <code>StorageError</code> if the event stream ends due to an error. |
| complete | Unsubscribe | null |
<b>Returns:</b>
Unsubscribe | Subscribe<!-- --><UploadTaskSnapshot<!-- -->>
If only the event argument is passed, returns a function you can use to add callbacks (see the examples above). If more than just the event argument is passed, returns a function you can call to unregister the callbacks.
**Pass callbacks separately or in an object.**
var next = function(snapshot) {};
var error = function(error) {};
var complete = function() {};
// The first example.
uploadTask.on(
firebase.storage.TaskEvent.STATE_CHANGED,
next,
error,
complete);
// This is equivalent to the first example.
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, {
'next': next,
'error': error,
'complete': complete
});
// This is equivalent to the first example.
var subscribe = uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED);
subscribe(next, error, complete);
// This is equivalent to the first example.
var subscribe = uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED);
subscribe({
'next': next,
'error': error,
'complete': complete
});
**Any callback is optional.**
// Just listening for completion, this is legal.
uploadTask.on(
firebase.storage.TaskEvent.STATE_CHANGED,
null,
null,
function() {
console.log('upload complete!');
});
// Just listening for progress/state changes, this is legal.
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, function(snapshot) {
var percent = snapshot.bytesTransferred / snapshot.totalBytes * 100;
console.log(percent + "% done");
});
// This is also legal.
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, {
'complete': function() {
console.log('upload complete!');
}
});
**Use the returned function to remove callbacks.**
var unsubscribe = uploadTask.on(
firebase.storage.TaskEvent.STATE_CHANGED,
function(snapshot) {
var percent = snapshot.bytesTransferred / snapshot.totalBytes * 100;
console.log(percent + "% done");
// Stop after receiving one update.
unsubscribe();
});
// This code is equivalent to the above.
var handle = uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED);
unsubscribe = handle(function(snapshot) {
var percent = snapshot.bytesTransferred / snapshot.totalBytes * 100;
console.log(percent + "% done");
// Stop after receiving one update.
unsubscribe();
});
Pauses a currently running task. Has no effect on a paused or failed task.
<b>Signature:</b>
pause(): boolean;
<b>Returns:</b>
boolean
True if the operation took effect, false if ignored.
Resumes a paused task. Has no effect on a currently running or failed task.
<b>Signature:</b>
resume(): boolean;
<b>Returns:</b>
boolean
True if the operation took effect, false if ignored.
This object behaves like a Promise, and resolves with its snapshot data when the upload completes.
<b>Signature:</b>
then(onFulfilled?: ((snapshot: UploadTaskSnapshot) => unknown) | null, onRejected?: ((error: StorageError) => unknown) | null): Promise<unknown>;
| Parameter | Type | Description |
|---|---|---|
| onFulfilled | ((snapshot: UploadTaskSnapshot<!-- -->) => unknown) | null | The fulfillment callback. Promise chaining works as normal. |
| onRejected | ((error: StorageError<!-- -->) => unknown) | null | The rejection callback. |
<b>Returns:</b>
Promise<unknown>