JavascriptProva

venerdì 2 settembre 2016

Upload di un file in Firebase Storage con ottenimento del suo indirizzo.

Adesso dobbiamo imparare come si aggiunge il listener che dà il segnale di avvenuto caricamento di un file sullo storage.
In realtà si aggiungono due listeners, uno di caricamento "andato liscio" e uno di errore nel caricamento.
Proviamo immediatamente:
        UploadTask uploadTask=childRef.putBytes(b);
        uploadTask.addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {

            }
        }).addOnSuccessListener(new OnSuccessListener() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                
            }
        });
Il codice dei metodi da chiamare per i due listener viene implementato automaticamente.
Ilcodice di onSuccess mi sembra interessante perché mi pare che ci si possa ricavare l'indirizzo di upload del file.
onSuccess ha come parametro un oggetto UploadTask.TaskSnapshot.
E vedo che sul tutorial c'è di mezzo un codice che potrebbe essere utile per ottenere l'indirizzo.
Il codice è semplicemente questo:
Uri downloadUrl=taskSnapshot.getDownloadUrl();
ossia il codice completo è:
        UploadTask uploadTask=childRef.putBytes(b);
        uploadTask.addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {

            }
        }).addOnSuccessListener(new OnSuccessListener() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Uri downloadUrl=taskSnapshot.getDownloadUrl();

            }
        });
E proviamolo. Ci aggiungo un segnale da darmi in LogCat:
        UploadTask uploadTask=childRef.putBytes(b);
        uploadTask.addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {

            }
        }).addOnSuccessListener(new OnSuccessListener() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Uri downloadUrl=taskSnapshot.getDownloadUrl();
                System.out.println(downloadUrl);
            }
        });
...e provo!

Ecco! Ho ottenuto questo:
 https://firebasestorage.googleapis.com/v0/b/jaccaprogetto.appspot.com/o/cazzate%2Ffacciadimerda.jpg?alt=media&token=b2040e89-d19a-415b-8d5c-d22c47b04b0d
e andandoci a cliccare sopra mi appare, nel browser, l'immagine in questione, che mi trovo sulla console salvata nella sottocartella "cazzate".
L'esperimento è riuscito!

Nessun commento:

Posta un commento