|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Firebase en español
Base de datos activa. Firebase - Juan Antonio Villalpando

-- Tutorial de iniciación de Firebase en español --

Volver al índice del tutorial

____________________________

________________________________________________________

150.- Firebase storage. JavaScript.

- Vamos a subir y bajar archivos a Firebase storage.

________________________________

- Reglas de Seguridad.

- Establecemos estas reglas públicas, cualquiera podrá leer y escribir en esta base.

- De vez en cuando Google nos avisará mediante nuestro correo que tenemos este proyecto con reglas públicas.

- rules_version = '2' ;

lo he puesto para que pueda funcionar la parte de "Listar archivos" que veremos más adelante.

Reglas


rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

________________________________

- Información necesaria.

- Necesitaremos la siguente información:

________________________________

- Código JavaScript.

- Copiamos este código en un archivo llamado firebasestorage.htm, en nuestro ordenador, cambiando los parámetros de configuración firebaseConfig.

firebasestorage.htm


<!DOCTYPE html>
<html><head>
<meta name="viewport" content="width=device-width, initial-scale=4, maximum-scale=1" />
</head><body>

<div>
<input type="file" id="files" multiple /><br /><br />
<button id="send">Upload</button>
<p id="uploading"></p>
<progress value="0" max="100" id="progress"></progress>
<br /><br /><br /><br />

<input type="text" name="nombre" id="name" value ="hello.wav" /><br /><br />
<button id="get_url">Get url file</button>
<p id="response"></p>

<button id="list_files">List files</button>
<p id="response_list"></p>
</div>

<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-storage.js"></script>

<script>
  var firebaseConfig = {
    apiKey: "AIzaSyADXXXXXXXXXXXXXXXXXXXXXXXXX-fEk",
    authDomain: "kio4.firebaseapp.com",
    databaseURL: "https://kio4.firebaseio.com",
    projectId: "firebase-kio4",
    storageBucket: "firebase-kio4.appspot.com",
    // messagingSenderId: "851XXXXXXXX7",
    // appId: "1:851XXXXXXXX7:web:6fXXXXXXXXXX866"
  };

  firebase.initializeApp(firebaseConfig);
</script>

<script>
//// CHOICE /////
var files = [];
document.getElementById("files").addEventListener("change", function(e) {
  files = e.target.files;
});

///// SEND FILES //////
document.getElementById("send").addEventListener("click", function() {

  if (files.length != 0) {
    for (let i = 0; i < files.length; i++) {
      var storage = firebase.storage().ref(files[i].name);
      var upload = storage.put(files[i]);
      upload.on("state_changed", function progress(snapshot) {
          var percentage = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
          document.getElementById("progress").value = percentage;
        },

        function error() {alert("Error uploading file.");},

        function complete() {document.getElementById( "uploading").innerHTML += `${files[i].name} uploaded <br />`;}); }
		
    } else {alert("No file chosen."); }
});
////////////////////////////////////

// GET URL ////////////////////
document.getElementById("get_url").addEventListener("click", function() {
  var get_url_file = document.getElementById("name").value;
  var storage = firebase.storage().ref(get_url_file);
  storage.getDownloadURL().then(function(url) {document.getElementById("response").innerHTML += `${url}  <br />`; })
                                         .catch(function(error) {alert("Error encountered."); });

});
////////////////////////////////////


// LIST FILES ////////////////////
document.getElementById("list_files").addEventListener("click", function() {
  var storageRef = firebase.storage().ref();
  storageRef.listAll().then(function(result) {
  result.items.forEach(function(urlFile) {document.getElementById("response_list").innerHTML +=  `${urlFile}  <br />`; });
                              }).catch(function(error) {alert("No file chosen."); });											
});

////////////////////////////////////
</script>
</body>
</html>

________________________________

- Ejecución del código anterior.

- Pulsamos sobre el nombre del archivo y se deberá abrir nuestro navegador web con esta página.

- Observa que el archivo firebasestorage.htm está en una carpeta de nuestro ordenador.

- Subimos varios archivos. Se pueden elegir varios archivos a la vez.

________________________________

- Aquí tenemos los archivos.

________________________________
________________________________
________________________________

1.- App Inventor. Obtener url y archivo.

p150_firebase_js.aia

________________________________

- Diseño.

- WebViewer está puesto como oculto.

________________________________

- Bloques.

fbs_geturl.htm


<!DOCTYPE html>
<html><head></head><body>
<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-storage.js"></script>

<script>
  var firebaseConfig = {
    apiKey: "AIzaSyADXXXXXXXXXXXXXXXXXXXXXXXXX-fEk",
    authDomain: "kio4.firebaseapp.com",
    databaseURL: "https://kio4.firebaseio.com",
    projectId: "firebase-kio4",
    storageBucket: "firebase-kio4.appspot.com",
    // messagingSenderId: "851XXXXXXXX7",
    // appId: "1:851XXXXXXXX7:web:6fXXXXXXXXXX866"
  };

  firebase.initializeApp(firebaseConfig);
</script>

<script>
  datos =  window.AppInventor.getWebViewString(); // Input.
  var get_url_file = datos;
  var storage = firebase.storage().ref(get_url_file);
  storage.getDownloadURL().then(function(url) { window.AppInventor.setWebViewString("" + url); })  // Output.
                                         .catch(function(error) {alert("Error encountered."); });
</script>
</body>
</html>

- Obtener la información de un archivo:

https://firebasestorage.googleapis.com/v0/b/firebase-kio4.appspot.com/o/hello.wav

_________________________________________________________________
- Borrar archivo.

fbs_delete.htm


<!DOCTYPE html>
<html><head></head><body>
<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.1/firebase-storage.js"></script>

<script>
  var firebaseConfig = {
    apiKey: "AIzaSyADXXXXXXXXXXXXXXXXXXXXXXXXX-fEk",
    authDomain: "kio4.firebaseapp.com",
    databaseURL: "https://kio4.firebaseio.com",
    projectId: "firebase-kio4",
    storageBucket: "firebase-kio4.appspot.com",
    // messagingSenderId: "851XXXXXXXX7",
    // appId: "1:851XXXXXXXX7:web:6fXXXXXXXXXX866"
  };

  firebase.initializeApp(firebaseConfig);
</script>

<script>
  datos =  window.AppInventor.getWebViewString(); // Input.
  var get_url_file = datos;
  var storage = firebase.storage().ref(get_url_file);
  storage.delete().then(function(url) { window.AppInventor.setWebViewString("Deleted."); })  // Output.
                                         .catch(function(error) {alert("Error encountered."); });
</script>
</body>
</html>

________________________________
________________________________
________________________________

2.- App Inventor. Subir archivo.

p150_firebase_js_2.aia

- Con el VisorWeb no podemos cargar la página y luego elegir archivo.

- Así que mediante el ActivityStarter abriremos el navegador que tenga el móvil por defecto y desde ahí eligiremos los archivos.

________________________________

- Bloques.

Action: android.intent.action.VIEW
DataUri: file:///mnt/sdcard/AppInventor/assets/firebasestorage.htm

________________________________
________________________________
________________________________

3.- App Inventor. Subir archivo mediante el componente Web.

p150_firebase_js_3.aia

- Mediante el componente Web también podemos subir archivos a Firebase storage.

- Aquí estamos teniendo en cuenta que los permisos son públicos, es decir todos pueden subir y bajar archivos.

________________________________

- Bloques.

https://firebasestorage.googleapis.com/v0/b/[storageBucket]/o/namefile.abc

In Content-Type:
image/gif, image/png, image/jpeg, image/bmp, image/webp, audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav, application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf, MIME Office .

________________________________
________________________________
________________________________

4.- App Inventor. Crear imagen QR. Subirla a Firebase Storage mediante componente Web.

p150_firebase_js_4.aia

- Convertimos un text a imagen QR mediante esta web:

- https://quickchart.io/documentation/#qr

- Esa imagen la ponemos en un SpriteImagen de un Lienzo.

- Además la guardamos en la SdCard (en Android 10+ debes guardarlo en el directorio ASD).

- Subimos esa imagen a FireBase Storage mediante el componente Web.

https://firebasestorage.googleapis.com/v0/b/[storageBucket]/o/miqr.png

- El storgeBucket lo obtenemos de la manera que hemos visto al principio de esta página.

- Una vez subida la imagen a FireBase, obtenemos su dirección mediante la información de contenidoDeRespuesta.

________________________________

- Diseño.

________________________________

- Bloques.

 

________________________________
________________________________
________________________________

5.- App Inventor. Subir archivo a DataBase mediante la extensión Base64.

- Fíjate que en Firebase tenemos dos tipos de base de datos Database y Storage.

- Storage es para guardar archivos, como acabamos de ver en este tutorial.

- Database es para guardar información corta, como temperatura, velocidad, texto corto,...

- Database no está destinado a guardar archivos, pero podemos guardarlos.

- Podemos convertir un archivo a String mediante Base64, subirlo. Luego se podría bajar convirtiéndo ese String Base64 a archivo.

appinventor/277_extension_imagen_string.htm

________________________________
________________________________
________________________________

6.- App Inventor. Subir archivo a DataBase mediante la extensión FireBaseStorage.

p150_firebase_6.aia

- Mediante esta extensión podemos subir y bajar archivos a Firebase

- La extensión com.mirxtremapps.FirebaseStorage.aix puedes bajarla de:

https://community.appinventor.mit.edu/t/firebase-storage-extension/58184/2

- Para facilitar el aprendizaje he puesto estos permisos:

Reglas


rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

 

- StorageBucket.

________________________________

- Diseño.

- En Android < 10, para que funcione el ImagePicker cuando la aplicación está instalada es necesario en Diseño. Screen1. DefaultFileScope = Legacy

________________________________

- Bloques.

__________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información