Hola, tengo un problema al cargar la imagen en la nube ( Backblaze B2 ).
El problema es que cuando utilizo el cliente Thunder de ejemplo para cargar el archivo, todo funciona bien y se muestra el archivo.
Ahora mi problema es que cuando subo con JS no sé por qué está dañado o con errores. Como cuando subo una imagen y la descargo, el Administrador de archivos de Windows dice: file format not supported.
Decodifiqué el archivo con el decodificador base64 img y funciona bien y se muestra la imagen.
const submitForm = () => { var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(e) { // binary data let imagedata = reader.result.slice(reader.result.indexOf(',') + 1) console.log(imagedata); console.log(sha1(imagedata)); const proxyurl = "https://cors-anywhere.herokuapp.com/"; let datadf = fetch(proxyurl + 'url', { method: 'POST', headers: { "Accept": "*/*", "User-Agent": "Thunder Client (https://www.thunderclient.io)", "X-Bz-File-Name": file.name, "X-Bz-Content-Sha1": "do_not_verify", "Authorization": "auth", "Content-Type": "b2/x-auto", }, body: imagedata, }) .then((response) => { return response.json(); }) .catch((err) => { return { status: 'fail', message: 'API CALL ERROR', error: err.message }; }); datadf.then(res => console.log(res)) }; reader.onerror = function(e) { // error occurred console.log('Error : ' + e.type); };
.readAsDataURL() convierte el archivo que lee en Base64, por lo que puede representarse como una URL que puede colocar en un navegador. Una URL muy larga, pero sigue siendo una URL.
Si almacena una representación Base 64 de una imagen en un archivo en su máquina, luego intenta leerla con un programa de visualización de imágenes, la operación fallará: "Esto no parece un archivo .jpg, .png o . gif" así que no sé qué hacer con él." Eso es lo que significa el mensaje de error del administrador de archivos de Windows.
Si desea que el contenido del archivo sea sin formato en lugar de codificado en Base64, deberá usar .readAsArrayBuffer() .