Skip to content

Instantly share code, notes, and snippets.

@mchampaneri
Created November 14, 2018 11:06
Show Gist options
  • Save mchampaneri/dd692660405ca7b6cdf74af8e9e45f77 to your computer and use it in GitHub Desktop.
Save mchampaneri/dd692660405ca7b6cdf74af8e9e45f77 to your computer and use it in GitHub Desktop.
firestore code work with dropzone
function storage_upload(filedata, filehandle, DropzoneHandle, cb) {
// Getting Handle of the progressbar element of current file //
var progressBar = filehandle.previewElement.children[2]
// Firestore storage task
var task
// uuid for file being uploaded
var uuid_string = uuid()
// Getting Storeage referance for file
var storageRef = firebase.storage().ref(User.client_id + "/" + uuid_string);
// Because I am uploading file in base64 data_url //
task = storageRef.putString(filedata, 'data_url');
// Making progress bar of current file preview element visible
progressBar.opacity = 1
task
.on(firebase.storage.TaskEvent.STATE_CHANGED,
// Trakcing progress of upload
function progress(snapshot) {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
// Updating progressbar width - to make it look like filling
progressBar.children[0].style.width = progress + '%'
},
// Firebase storeage upload error handling
function(error) {
// Hanlde your way
// A full list of error codes is available at
// https://firebase.google.com/docs/storage/web/handle-errors
},
// Finishing process and returing data
// Returning file-meta and url
// and hiding progress bar
function() {
// Upload completed successfully, now we can get the meta data of file
task.snapshot.ref.getMetadata().then(function(meta) {
// Getting download url of file
task.snapshot.ref.getDownloadURL().then(function(downloadUrl) {
// storing meta data and download url in object and returning
// it to callign function ...
var response = {
object_info: {
publicURL: downloadUrl,
metainfo: meta
},
type_of_object: type
}
filehandle.fullPath = meta.fullPath
return cb(response)
})
})
// Hiding progress bar for current file
progressBar.style.opacity = 0
}
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment