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

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

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 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