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

288
Vistas
Intentar descargar un archivo .xlsx y cargarlo en Azure Blob Storage mediante Playwright con Javascript produce un archivo .xlsx con formato incorrecto y un encabezado incorrecto

Estoy tratando de descargar un archivo de Excel y luego cargarlo en Azure Blob Storage para usarlo en Azure Data Factory. Tengo un javascript de dramaturgo que funcionó cuando el archivo era .csv, pero cuando pruebo el mismo código con un archivo de Excel, no se abre en Excel. Dice: "Encontramos un problema con algún contenido en 'order_copy.xlsx'. ¿Quiere que intentemos recuperar tanto como podamos?: Después de hacer clic en Sí, dice: "Excel no puede abrir el archivo 'order_copy.xlsx'. ' porque el formato o la extensión del archivo no es válido. Verifique que el archivo no se haya dañado y que la extensión del archivo coincida con el formato del archivo".

¿Alguna idea sobre cómo usar createReadStream de manera más efectiva para hacer esto y preservar el formato .xlsx?

No creo que el método saveAs funcione, ya que este código se ejecuta en una función de Azure sin acceso a una ruta local conocida.

Lo primero que pensé fue que el tipo de contenido no era el correcto, así que lo configuré, pero aún así no funcionó. Probé un codificador UTF-8 pero tampoco funcionó.

 //const data = await streamToText(download_csv.createReadStream()) const download_reader = await download_csv.createReadStream(); let data = ''; for await (const chunk of download_reader) { data += chunk; //---I suspect I need to do something different here } // const data_utf8 = utf8.encode(data) //unescape( encodeURIComponent(data) ); const AZURE_STORAGE_CONNECTION_STRING = "..." //---Removed string here // Create the BlobServiceClient object which will be used to create a container client const blob_service_client = BlobServiceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING); // Get a reference to a container const container_client = blob_service_client.getContainerClient('order'); const blob_name = 'order_copy.xlsx'; // Get a block blob client const block_blob_client = container_client.getBlockBlobClient(blob_name); const contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' const blobOptions = { blobHTTPHeaders: { blobContentType: contentType } }; //const uploadBlobResponse = await block_blob_client.upload(data_utf8, data_utf8.length, blobOptions); const uploadBlobResponse = await block_blob_client.upload(data, data.length, blobOptions); console.log("Blob was uploaded successfully. requestId: ", uploadBlobResponse.requestId);

Cualquier orientación sería apreciada. ¡Gracias de antemano por su ayuda!

-Chad

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

0

Gracias @Gaurav por la sugerencia de no configurar los datos en una cadena. El siguiente código funcionó después de que cambié a usar una matriz de fragmentos y lo concatené usando el búfer similar al código sugerido.

 let chunks = [] for await (const chunk of download_reader) { chunks.push(chunk) } const fileBuffer = Buffer.concat(chunks) ... const uploadBlobResponse = await block_blob_client.upload(fileBuffer, fileBuffer.length, blobOptions);

¡Gracias a todos!

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