Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

454
Vistas
Cargue (transmisión directa) un archivo desde la interfaz a Google Cloud Storage usando multer

Estoy administrando un portal, integrado en la pila MERN, en el que los usuarios pueden cargar de forma independiente los nuevos contenidos de audio/video creados. Decidí usar Google Cloud Storage como un servicio para almacenar contenido de usuario. (Sé que también puedes usar Firebase, por el momento prefiero usar "solo" Cloud Storage).

En el backend, a través de express, creé un punto final POST/usercontent y, a través de multer, recibí el archivo y luego lo guardé en Google Cloud.

Todo funciona perfectamente, pero no entiendo si estoy funcionando correctamente: me gustaría que el archivo se guardara DIRECTAMENTE en GCloud, sin guardarlo, ni siquiera temporalmente, en el backend. Esto se debe a que el contenido puede ser grande y es posible que tenga problemas de memoria.

Entiendo que necesito usar flujos, tuberías y PassThrough, sin embargo, mi conocimiento de este tema es limitado en este momento. He leído estas respuestas y ejemplos detenidamente, pero no puedo entender cómo trabajar correctamente al mismo tiempo que incorporo multer.

Fuentes:

https://github.com/googleapis/nodejs-storage/blob/main/samples/streamFileUpload.js No se puede canalizar la secuencia de lectura de archivos de Google Cloud Storage a la API de Google Drive https://cloud.google.com/storage/docs /streaming#code-samples ¿Cómo cargar un archivo de datos en la memoria al almacenamiento en la nube de Google usando nodejs?

Mi código:

 import Multer from 'multer'; import { Storage } from '@google-cloud/storage'; // config multer const multerStorage = Multer({ storage: Multer.memoryStorage(), limits: { fileSize: 10*1024*1024 } }); // set endpoint router.post('/upload', multerStorage.single('uploadedFile'), async (req, res, next) => { // creates a client from a Google service account key const storage = new Storage({ projectId: 'xxx', keyFilename: 'yyy' }); // access bucket const bucket = storage.bucket('bucketName'); // create new file inside bucket const newFile = bucket.file(req.file.originalname); // STREAM ***HERE MY DOUBTS! *** const fileStream = newFile.createWriteStream({ metadata: { contentType: req.file..mimetype }, resumable: false }); fileStream.write(req.file.buffer); fileStream.on('error', err => { console.error('error', err) }); fileStream.on('finish', () => { console.log('finish!'); }); fileStream.end(); // 7 response res.status(200).json({ status: res.statusCode, message: 'Upload OK' }); });

¿Alguien puede ayudarme a implementar este código para enviar directamente la transmisión a Google Cloud Storage?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El propósito de la transferencia de Streaming es transmitir datos hacia y desde su cuenta de Cloud Storage sin necesidad de que los datos se guarden primero en un archivo como se menciona en este documento .

El método createWriteStream, que le preocupa, está documentado aquí . Puede controlar la transmisión utilizando las opciones disponibles aquí .

Para la carga reanudable, los archivos se pueden almacenar localmente si se puede escribir en el directorio como se indica en este documento .

Las cargas reanudables se habilitan automáticamente y deben desactivarse explícitamente configurando options.resumable en falso.

Las cargas reanudables requieren acceso de escritura al directorio $HOME. A través config-store , se almacenan algunos metadatos. De forma predeterminada, si no se puede escribir en el directorio, recurriremos a una carga simple. Sin embargo, si solicita explícitamente una carga reanudable y no podemos escribir en el directorio de configuración, devolveremos un ResumableUploadError.

En su caso, como ha establecido options.resumable en false, debería ser una carga simple y no debería almacenar el archivo localmente.

Para verificar si se almacena en el almacenamiento local, puede ejecutar el código en el alcance que evita la escritura binaria en el disco. Alternativamente, puede monitorear el uso del disco durante la operación de carga.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda