Estoy tratando de convertir una cadena base64 en un archivo de imagen y pasarlo a Firebase a través de Express.
Todo funciona bien en el front-end, excepto esta parte:
const convertBase64ToFile = (base64String, fileName) => { let arr = base64String.split(','); let mime = arr[0].match(/:(.*?);/)[1]; let bstr = atob(arr[1]); let n = bstr.length; let uint8Array = new Uint8Array(n); while (n--) { uint8Array[n] = bstr.charCodeAt(n); } const file = new File([uint8Array], fileName, { type: mime }); /// getting Error in this line return file }¿Qué biblioteca tengo que importar?
Error:
const file = new File([uint8Array], fileName, { type: mime }); /// getting Error in this line ^ ReferenceError: File is not defined at convertBase64ToFile (C:\Users\rahto\devel\new\maissaudeapi\api\firestore\write.js:19:16) at conversor (C:\Users\rahto\devel\new\maissaudeapi\api\firestore\write.js:33:16) at C:\Users\rahto\devel\new\maissaudeapi\mainServer.js:31:21 at Layer.handle [as handle_request] (C:\Users\rahto\devel\new\maissaudeapi\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\rahto\devel\new\maissaudeapi\node_modules\express\lib\router\route.js:144:13) at Route.dispatch (C:\Users\rahto\devel\new\maissaudeapi\node_modules\express\lib\router\route.js:114:3) at Layer.handle [as handle_request] (C:\Users\rahto\devel\new\maissaudeapi\node_modules\express\lib\router\layer.js:95:5) at C:\Users\rahto\devel\new\maissaudeapi\node_modules\express\lib\router\index.js:284:15 at Function.process_params (C:\Users\rahto\devel\new\maissaudeapi\node_modules\express\lib\router\index.js:346:12) at next (C:\Users\rahto\devel\new\maissaudeapi\node_modules\express\lib\router\index.js:280:10) Node.js v18.6.0 [nodemon] app crashed - waiting for file changes before starting...Entonces, cambié a esto:
const convertBase64ToFile = (base64String, fileName) => { let arr = base64String.split(','); let mime = arr[0].match(/:(.*?);/)[1]; let bstr = atob(arr[1]); let n = bstr.length; let uint8Array = new Uint8Array(n); while (n--) { uint8Array[n] = bstr.charCodeAt(n); } const file = fs.writeFileSync(fileName, uint8Array) let fiz = fs.readFileSync(fileName, file); // const file = new File([uint8Array], fileName, { type: mime }); return fiz }Y obtuve este error:
C:\Users\rahto\devel\new\maissaudeapi\node_modules\@firebase\storage\dist\index.node.cjs.js:3036 const newPath = child(ref._location.path, childPath); ^ TypeError: Cannot read properties of undefined (reading 'path')Parece que está utilizando el tiempo de ejecución del node . Puede usar el módulo fs para acceder al sistema de archivos.
fs.writeFile( file, data, options, callback )Parámetros: Este método acepta cuatro parámetros como se mencionó anteriormente y se describe a continuación:
Uso:
var fs = require('fs'); fs.writeFile('file.txt', 'Hello content!', function (err) { if (err) throw err; console.log('Saved!'); });También consulte más aquí y aquí para ver el uso. Y también consulte aquí para obtener documentación.