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

138
Views
Transmisión de archivos de almacenamiento en la nube de Google a fsReadstream sin guardar en un archivo

Necesito enviar un archivo de video desde el almacenamiento en la nube de Google a una API, esta API normalmente acepta flujos de archivos fs. Sin embargo, esto significa que tengo que guardar el archivo de video descargándolo y guardándolo en un archivo local antes de enviarlo. Realmente me gustaría evitar eso si es posible.

Así es como actualmente estoy enviando mis archivos de video a la API, espera un flujo de lectura fs.

 const filestream = fs.createReadStream('C:/Users/[me]/Downloads/testvid.mp4'); data.append('video',filestream); axios({ method: 'post', url: postUrl, headers: { 'Content-Type': 'multipart/form-data', ...data.getHeaders() }, data: data })

Lo que me gustaría hacer es esencialmente tomar el archivo del depósito de almacenamiento, crear un flujo de lectura SIN guardarlo localmente y pasarlo a mi solicitud de publicación de axios.

 const file = await storage.bucket("[bucket]").file("filename.mp4"); fs.createReadStream(file);

¿Cómo lograría esto?

Hasta ahora, he intentado pasar el flujo de lectura de Google directamente y he creado un flujo de paso importando 'flujo', pero ninguno ha funcionado. Agradecería cualquier aporte.

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

En la página Descargar objetos , puede ver en la parte inferior un enlace para Crear transferencias utilizando diferentes orígenes y destinos, como almacenamiento en la nube o sistema de archivos.

Si esto no es lo que quieres hacer, puedes usarlo o combinarlo con las transferencias de Streaming . Hay un buen ejemplo de flujos de descarga usando Node.js como sigue:

 /** * TODO(developer): Uncomment the following lines before running the sample. */ // The ID of your GCS bucket // const bucketName = 'your-unique-bucket-name'; // The ID of your GCS file // const fileName = 'your-file-name'; // The filename and file path where you want to download the file // const destFileName = '/local/path/to/file.txt'; // Imports the Google Cloud client library const {Storage} = require('@google-cloud/storage'); // Creates a client const storage = new Storage(); async function streamFileDownload() { // The example below demonstrates how we can reference a remote file, then // pipe its contents to a local file. // Once the stream is created, the data can be piped anywhere (process, sdout, etc) await storage .bucket(bucketName) .file(fileName) .createReadStream() //stream is created .pipe(fs.createWriteStream(destFileName)) .on('finish', () => { // The file download is complete }); console.log( `gs://${bucketName}/${fileName} downloaded to ${destFileName}.` ); } streamFileDownload().catch(console.error);
about 4 years ago · Santiago Gelvez Report

0

Seguí una solución similar a la que sugirió Alex, pero en lugar de obtener todo de Google directamente, solo usé una solicitud de obtención en la URL de Google para obtener una transmisión y la pasé a mis datos de formdata como una transmisión. Esto funciona perfectamente para poder enviar un archivo desde un servidor remoto sin descargarlo.

 const downStream = await axios({ method: 'GET', responseType: 'stream', url: url }) var data: FormData = new FormData(); data.append('video', downStream.data); const response = await axios({ method: 'post', url: postUrl, headers: { 'Content-Type': 'multipart/form-data', ...data.getHeaders() }, data: data, maxContentLength: Infinity, maxBodyLength: Infinity, })
about 4 years ago · Santiago Gelvez 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!