Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

132
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda