Je suis sur WAMP avec apache 2.4.4, Php 5.4.12. Je suis en POO avec pattern MVC ( mais je pense pas que ça change quelque chose vu la localisation de mon problème )
Alors le contexte : je veux faire un systeme de upload/download de fichier de tous types. La partie upload marche super bien, mais pour la partie download c'est une autre histoire.
Comment je fais =>
Quand un utilisateur arrive sur la page d'un document il a accès ( si il est connecté ) à un bouton Download et lorsqu'il clique dessus cela va lancer un module de téléchargement composé d'un controleur et d'un view.
Le controleur va rechercher les infos dans la BDD sur le fichier ( localisation, nom, type ... ) pour les fournir à la view.
Et pour finir la view contient :
<?php
if(file_exists ($doc->getChemin()))
{
header('Content-Description: File Transfer');
// header('Content-type: '.$mine.''); <== bizarrement il ne s'affiche pas dans le apache_response_headers() donc je l'ai mis en commentaire
header('Content-Disposition: attachment; filename="'.$nom.'"');
header('Content-Length: ' . filesize($doc->getChemin()));
header('Content-Transfer-Encoding: binary');
// print_r(apache_response_headers()); <== c’était pour voir si la réponse contenait bien toutes mes modifications
ob_clean();
flush();
readfile($doc->getChemin());
exit;
}
else
echo "FAIL";
Le fichier existe, tout va bien, et lorsque c'est un fichier PDF c'est même génial car il n'y a aucun problème. Par contre, pour les autres types de fichier => CACA !
Le fichier ne s'ouvre pas.
J'ai donc ouvert dans notepad++:
l'image A qui est l'image que j'ai utilisé pour l'upload
l'image B qui est l'image qui se trouve sur le serveur une fois l'upload effectué
l'image C qui est l'image récupérée par download
L'image A et B donc identique et détectée en encodage ANSI
L'image C est détecté en encodage UTF-8 et si je dis à notepad : " Non c'est pas UTF8 mais ANSI " et que j'enregistre, l'image C s'ouvre normalement.
Donc peut être ( ça se trouve je dis des bêtises et ça a rien avoir ) qu'il faut que le serveur envoie le fichier avec le bonne encodage ... mais je ne sais pas faire.
Si vous avez des suggestions , voir même des solutions je suis preneur et disposez à vous fournir des informations supplémentaire.
( Vous êtes peut-etre ma derniere chance )