• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

420
Views
Problema de codificación al descargar un archivo de s3 en reactjs usando una URL prefirmada

Estoy tratando de descargar un archivo csv presente en mi cubo s3 usando una URL prefirmada que obtengo de mi servidor back-end. Puedo descargar el archivo completo, pero en la última fila aparecen algunos caracteres no deseados

Este es el archivo csv que obtengo después de la descarga

 sepal_length,sepal_width,petal_length,petal_width,species 6.9,3.1,5.4,2.1,virginica 6.7,3.1,5.6,2.4,virginica 6.9,3.1,5.1,2.3,virginica 6.8,3.2,5.9,2.3,virginica 6.7,3.3,5.7,2.5,virginica 6.7,3.0,5.2,2.3,virginica 6.3,2.5,5.0,1.9,virginica 6.5,3.0,5.2,2.0,virginica 6.2,3.4,5.4,2.3,virginica 5.9,3.0,5.1,1.8,virginica MÏoKó ×Ô]ü°

Como puede ver, el archivo se agrega con algunos valores basura (probablemente debido a algún problema de codificación)

Cuando ejecuto el comando de archivo en mi terminal, obtengo

 file Download.csv >>> Download.csv: data

Estoy usando dos mutaciones, una buscará la URL prefirmada y la otra descargará el archivo de s3.

 useGetPresignedDowloadUrl.mutate( (some_string), { onSuccess: (data, variables, context) => { const s3Data = data as {requestUrl: string, headers: any} downloadExecutionOutputFromS3.mutate( ({requestUrl: s3Data.requestUrl as string, headers: s3Data.headers}), { onSuccess: (data, variables, context) => { download(data as Blob, "Downloaded.csv") } } ) }, } )

Dentro de la mutación downloadExecutionOutputFromS3 estoy usando la siguiente función asíncrona

 s3DownloadRequest = async function (url, headers) { // url and headers coming from backend const response = await fetch(url, {method: 'GET', headers: headers}) return response.blob() }

Y mi función de descarga parece

 function download(blob: Blob, filename: string) { let newBlob = new Blob([blob], {type: 'text/plain'}); const url = window.URL.createObjectURL(newBlob); const a = document.createElement('a'); a.style.display = 'none'; a.href = url; // the filename you want a.download = filename; document.body.appendChild(a); a.click(); document.body.removeChild(a); window.URL.revokeObjectURL(url); }
about 3 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error