tipo resuelva repararse reparar que página puedo puede pudo producido online muestre hay gratis esta error documento descargar debido dañado correctamente cargar archivos archivo admitido abrir php download content-type

php - resuelva - Descargar archivo corrupto. ¿El tipo de contenido no funciona?



resuelva el error de documento dañado al abrir archivos pdf (8)

Retire los encabezados y mire la página, ¿ve algún mensaje de error? Si PHP genera algo más que el origen de PDF real, el archivo parecerá estar dañado.

Quiero permitir que un usuario descargue un archivo pdf, el código de descarga está debajo ... por alguna extraña razón, aunque el archivo se está descargando, me da un error al decir que el archivo se ha dañado en el servidor ... Podría alguien me ayude y señale dónde estoy cometiendo mi error.

<php $name = $_POST["name_first"]; $mail = $_POST[''email'']; $number = $_POST[''phone_number'']; $email_message = "first name: {$name} email is {$mail} number is {$number} "; mail(''[email protected]'', ''Form Response'', $email_message); if ($mail == "" OR $name == "" OR $number == "") { echo "Enter valid details "; } else { header(''Content-type: application/pdf''); header(''Content-Disposition: attachment; filename="tokina.pdf"''); readfile(''docs/tokina.pdf''); } ?>


Su archivo PDF tokina.pdf no está cargado o no está en el mismo directorio que el archivo PHP. Es por eso que está guardando como "tokina.pdf.htm"; en su lugar, está cargando el HTML de una página 404. Es por eso que su navegador / visor de PDF piensa que el archivo está "dañado", porque su extensión es PDF pero su contenido no.

Asegúrese de que el archivo esté cargado, y si lo está, asegúrese de que readfile apunte a la ruta correcta. Si no está en la misma carpeta, use una ruta relativa / absoluta, por ejemplo:

readfile(''docs/tokina.pdf'');

Y sí, el tipo de contenido debe ser application/pdf


Tal vez su tipo de contenido no es correcto. prueba este:

header(''Content-type: application/pdf''); header(''Content-Disposition: attachment; filename="downloaded.pdf"''); readfile(''original.pdf'');


Usé este código para descargar pdfs:

header ("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header(''Content-Type: application/octetstream''); header("Content-Transfer-Encoding: Binary"); header("Content-length: ".filesize($file)); header("Content-disposition: attachment; filename=/"".basename($filename)."/""); readfile("$file"); }

Esto debería estar bien, y asegúrese de que no haya espacios o caracteres de retorno (no escape de ninguna manera la mejor solución).

Si encuentra que todavía tiene problemas, abra el archivo dañado con el bloc de notas (puede haber una advertencia de error php adentro).

¡Espero que esto ayude!


Usando esta secuencia de comandos

header(''Content-Type: application/force-download''); header(''Content-Disposition: attachment; filename=''.$filename); header(''Content-Transfer-Encoding: binary''); header(''Content-Length: ''.filesize($filenamepath)); readfile($filenamepath);

Yo tuve el mismo problema. Al comparar el archivo original y el archivo descargado con un editor hexadecimal como UltraEdit, encontré algunos caracteres al principio del archivo dañado.

El problema era que después de marcar el final del código PHP, había terminadores de línea varias veces en mi código.

¿Eliminar todos los terminadores de línea después ?> Y leer también el artículo del foro Los archivos descargados están corruptos: problema común . Eso funcionó para mí.

Espero que pueda ayudarte.


intente sacar las comillas dobles en

header(''Content-type: "application/octet-stream"'');

entonces se vuelve

header(''Content-type: application/octet-stream'');


yo suelo

$download_path = your path (where to look for the files) set_time_limit(0); $file_url = $download_path . $data[''link'']; header(''Content-Type: application/octet-stream''); header(''Content-Disposition: attachment; filename="'' . basename($file_url). ''"''); //then to read the file readfile($file_url);

Usualmente esto funciona para mi


header(''Content-type: application/pdf'');

habilite la extensión PHP php_gettext y listo.