Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

452
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!