from force php http mobile download content-type

php - from - Utilidad del encabezado HTTP "Content-Type: application/force-download" para dispositivos móviles?



php header download file (3)

Para descargar un archivo, utilice el siguiente código ... Almacene el nombre del archivo con la ubicación en la variable $ file. Es compatible con todo tipo de mime

$file = "location of file to download" header(''Content-Description: File Transfer''); header(''Content-Type: application/octet-stream''); header(''Content-Disposition: attachment; filename=''.basename($file)); header(''Content-Transfer-Encoding: binary''); header(''Expires: 0''); header(''Cache-Control: must-revalidate, post-check=0, pre-check=0''); header(''Pragma: public''); header(''Content-Length: '' . filesize($file)); ob_clean(); flush(); readfile($file);

Para conocer los tipos de Mime, consulte este enlace: http://php.net/manual/en/function.mime-content-type.php

Actualmente estoy trabajando en un script PHP que te permite descargar contenidos multimedia (video, audio, imágenes ...) desde tu dispositivo móvil accediendo a un enlace. (es decir, http://www.my-web-site.com/download.php?id=7ejs8ap ) Mi script funcionó muy bien cuando lo estaba probando con un móvil reciente (Samsung Galaxy S, iPhone 4S, algunos otros ... ) pero ocurrió un error en mi viejo móvil Samsung C3050. Los medios que quería descargar no eran más que un archivo de audio mp3 que generalmente descargo fácilmente.

El error parece ser "Tipo de contenido desconocido". Por lo tanto, como mi único encabezado HTTP Content-Type fue "application / force-download", trato de comentar esto y volver a intentarlo. Entonces, funciona. Pero ahora, actualmente estoy preguntando qué significa este tipo de contenido y si puede ser obligatorio para otros dispositivos móviles. Probé sin Content-Type en el iPhone 4 y funciona, pero no estoy seguro de esta compatibilidad para todos los dispositivos móviles.

¿Puede alguien explicarme cómo funciona ese tipo de contenido? ¿Por qué este no es un MIME estándar o cualquier otra cosa que pueda ayudarme a estar seguro de que este es un tipo de contenido opcional para cada descarga, sea cual sea el archivo, el navegador o el dispositivo? estoy descargando?

Gracias a todos.

Aquí están mis encabezados de PHP enviados:

<?php //Assume that $filename and $filePath are correclty set. header(''Content-Description: File Transfer''); header(''Content-Disposition: attachment; filename="''.$filename.''"''); // header(''Content-Type: application/force-download''); Non-standard MIME-Type, incompatible with Samsung C3050 for example. Let it commented readfile($filePath); ?>

EDITAR: Acabo de probar con un Sony Xperia, y la descarga no fue exitosa: solo veo los bytes "codificados en html" de mi archivo que quiero descargar. ¿Cómo puedo saber qué tipo de contenido debo usar si application / octet-stream o application / force-download no funciona?


Content-Type: application/force-download significa "Yo, el servidor web, voy a mentirle a usted (el navegador) sobre qué es este archivo para que no lo trate como PDF / Word Document / MP3 / lo que sea y en su lugar, solicite al usuario que guarde el archivo misterioso en el disco ". Es un truco sucio que se rompe horriblemente cuando el cliente no hace "guardar en el disco".

Utilice el tipo de mime correcto para cualquier medio que esté utilizando (por ejemplo, audio/mpeg para mp3).

Use la disposición de Content-Disposition: attachment; etc etc Content-Disposition: attachment; etc etc encabezado si desea alentar al cliente a descargarlo en lugar de seguir el comportamiento predeterminado.


application/force-download no es un tipo MIME estándar. Es un truco compatible con algunos navegadores, agregado bastante recientemente.

Tu pregunta realmente no tiene ningún sentido. Es como preguntar por qué Internet Explorer 4 no es compatible con la última funcionalidad de CSS 3.