No More Posting New Topics!

If you have a question or an issue, please start a thread in our Github Discussions Forum.
This forum is closed for new threads/ topics.

Navigation

    Quasar Framework

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    Q-Uploader with firebase storage

    Framework
    4
    8
    4186
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jvmonjo last edited by

      Since url property is required in q-uploader, I’m trying to figure out what is the proper way to configure it to work with firebase storage.

      I managed to upload to Firebase Storage using custom method, but still don’t know how to make it work with the built in url property so the user can see the upload progress and success.

      1 Reply Last reply Reply Quote 0
      • a47ae
        a47ae last edited by

        I do not think this is possible because Firebase Storage requires the API to upload files.
        Your only option would be to try the Google Cloud JSON API, because as far as I know Firebase is just Google Cloud under the hood for the most parts.
        There you have a URL which you can give to QUploader: https://cloud.google.com/storage/docs/json_api/

        Otherwise, you have to build the uploading component by yourself. Here is a guide on how to get the status of the upload: https://firebase.google.com/docs/storage/web/upload-files#monitor_upload_progress

        1 Reply Last reply Reply Quote 0
        • J
          jvmonjo last edited by jvmonjo

          Thanks. I was afraid of that being the case, but I asked just in case I was missing something. I’ll try both solutions.

          1 Reply Last reply Reply Quote 1
          • a47ae
            a47ae last edited by

            Let us know which way worked for you. 👍🏻

            1 Reply Last reply Reply Quote 1
            • V
              Val last edited by Val

              Hello

              I need the same feature so I’ve spent the last hours working on a fork to use q-uploader with Firebase Storage

              Looks good so far :

              0_1503670958030_upload-c48c0614-ccd9-4e1e-9af5-6cacec990b18

              Usage : pass a Firebase Storage Ref and omit the url prop
              <q-uploader :firebase-storage=“storageRef” />
              edit: there’s more, I’ll provide more doc, don’t just rely on this

              I’ll post the repo here soon after some more tests

              Cheers

              1 Reply Last reply Reply Quote 2
              • V
                Val last edited by

                You can find my PR there :
                https://github.com/quasarframework/quasar/pull/838

                Feel free to test and comment 👍


                Just provide a Firebase Storage Ref instead of an url, and you’re good.
                All existing features are preserved : progress, events, abort, multiple files, additional fields …

                New prop : firebaseStorage (Object || Function)

                Simplest Usage

                If prop firebaseStorage is a Firebase Storage Ref :

                  const storageRef = firebase.storage().ref('quasar-uploader-test')
                  ...
                  <q-uploader :firebase-storage="storageRef" ... />
                

                When you do not provide an url prop, q-uploader will look at the firebaseStorage prop and use it.
                Everything else is taken care of.
                As a bonus, the original additionalFields prop is preserved, and used to populate the metadata.customData that will be saved with your file.

                Avdanced Usage

                If prop firebaseStorage is a function that returns a Firebase Storage Ref :

                  makeUploadTaskWithTimestamp (file) {
                      const originalName = file.name
                      const newFilename = `${Date.now()}.${file.name}`
                      const metadata = {
                        customMetadata: {
                          originalName
                        }
                      }
                      return storageRef.child(newFilename).put(file, metadata)
                    }
                  ...
                  <q-uploader :firebase-storage="makeUploadTaskWithTimestamp " ... />
                

                If firebaseStorage is a function, it will be passed a file object, and should return a Firebase Upload Task.
                This is very useful if, by example, you wish to rename a file before upload : you can avoid overwriting an existing file with the same name.

                You can also use this function to populate the metadata.customData object, to save any useful data with your file.


                Minor feature : filter files before they reach the queue

                New prop : fileFilter (Function)

                Works with both the original url mode, and Firebase mode.

                <q-uploader :file-filter="file => /.+\.png$/i.exec(file.name)" ... />
                

                Useful if you want to limit uploads to some file extension, or limit them by size, etc.
                Doesn’t replace a server-side check, but can avoid useless upload time/bandwidth waste (and user frustration).

                Will emit a filtered event with the files that didn’t pass the test : can be used to notify the user and explain him the reasons.


                Test/Demo

                in quasar folder :
                npm install firebase
                in /dev/data :
                copy firebase-storage-example.json as firebase-storage.json and fill it with your Firebase credentials

                then quasar dev and go to http://localhost:8080/#/components/uploader

                1 Reply Last reply Reply Quote 1
                • J
                  jvmonjo last edited by

                  Thanks I managed to write my own uploader and it works but it is not looking good. I’ll try your q-uploader pr.

                  1 Reply Last reply Reply Quote 1
                  • J
                    JordanOwlie last edited by

                    +1 for the firebase storage uploader :).

                    1 Reply Last reply Reply Quote 1
                    • First post
                      Last post