Puedo cargar con éxito varios archivos en el almacenamiento de Firebase, el problema es que cuando intento cargar solo 1 archivo, no pasa nada.
Cuando tengo varios archivos, se agregan a una matriz y luego puedo cargarlos en la base de datos de Firebase, pero ¿cómo hacerlo con solo 1 archivo?
//choose files document.querySelector('#pictures').addEventListener('change', (e) => { const formData = extractFormData('#statusForm'); while (fileCollection.length) { fileCollection.pop(); console.log("test"); } [].slice.call(formData.pictures).map(f => fileCollection.push(f)); console.log(formData.pictures); }); //choose files document.forms.statusForm.addEventListener('submit', (e) => { e.preventDefault(); e.stopPropagation(); const formData = extractFormData('#statusForm'); const text = formData.status; formData.status = ''; sendData(text, fileCollection) setTimeout(() => { while (fileCollection.length) { fileCollection.pop(); } }, 100); }); var extractFormData = function (form) { const formData = new FormData(document.querySelector(form)); values = {}; for(var pair of formData.entries()) { if( values[pair[0]] ) { if(!(values[pair[0]] instanceof Array)) { values[pair[0]] = new Array(values[pair[0]]); } values[pair[0]].push(pair[1]); } else { values[pair[0]] = pair[1]; } } console.log("values: " + values); return values; }Así es como se arregló, cambié la función extractFormData a
const extractFormData = function (form) { const formData = new FormData(document.querySelector(form)); const values = {}; for (let [key, value] of formData.entries()) { if (values[key]) { if ( ! (values[key] instanceof Array) ) { values[key] = new Array(values[key]); } values[key].push(value); } else { values[key] = value; if(typeof values[key] === 'undefined') { // does not exist console.log("doesnt exist") } else { // does exist values[key] = new Array(values[key]); } } } return values; }