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

180
Views
tipo de contenido incorrecto en blob no se puede abrir img/archivo dañado

Estoy tratando de descargar un archivo usando la función JS Blob(), pero no puedo abrirlo. No está claro qué tipo de antemano, ya que obtuve una lista de archivos, el usuario puede elegir qué descargar. Mac dice que el formato podría estar dañado y que no puede abrir ese archivo.

La respuesta de cURL que tengo, a partir de la cual creo un blob, es una cadena binaria (al menos eso creo porque cuando la descargo, solo ves símbolos y caracteres aleatorios, como cuando abres una imagen con el editor de texto)

Aquí está el código de la imagen tal como lo tengo a través de la respuesta de mi cURL

y aquí está mi código para descargar esta imagen.

 var a; a = document.createElement('a'); a.href = URL.createObjectURL(new Blob([JSON.stringify(response)])); // here i tried with and without JSON.stringify // also tried new Blob([JSON.stringify(response)],{type:'image/jpeg'}) or with * instead of jpeg, nothing works. Does anybody happen to know what mistake i am doing? a.download = data.data.name; a.style.display = 'none'; document.body.appendChild(a); a.click();

He estado luchando con esto durante unos días, cualquier ayuda es apreciada.

También cuando yo (en Mac Terminal) hago el siguiente comando:

 file test.jpeg

vuelve

 test.jpeg: data

Saludos

EDITAR: Mi código PHP

$ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, "https://myapi.com/webapp/api/v1/document/id/" . $id . "/download"); curl_setopt($ch, CURLOPT_HTTPHEADER, array('AuthenticationToken:' . $token)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); echo $output;
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede intentar serializar los datos de la imagen en una cadena base64 y pasarla al cliente

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://myapi.com/webapp/api/v1/document/id/" . $id . "/download"); curl_setopt($ch, CURLOPT_HTTPHEADER, array("AuthenticationToken:" . $token)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); curl_close($ch); $base64 = "data:/" . $contentType . ";base64," . base64_encode($output); echo $base64;

En este caso, en su lado del cliente solo necesita poner el texto de respuesta para el href de esta manera:

 const a = document.createElement('a'); a.href = response; a.download = data.data.name; a.style.display = 'none'; document.body.appendChild(a); a.click();
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!