Upload de fichiers en PHP : corruption des données - PHP - Programmation
Marsh Posté le 04-05-2011 à 12:10:24
le champ dans lequel tu stockes ça fait quelle taille ?
en général on stocke les fichiers a coté et on ne met en base que le chemin d'accès
Marsh Posté le 04-05-2011 à 12:15:53
Ce n'est pas un problème de taille : les fichiers font moins de 5 Mo au max, et le champ est de type longblob.
Et surtout, tout le process fonctionnait nickel avant la migration vers des versions plus récentes de PHP et MySQL.
Merci.
Marsh Posté le 04-05-2011 à 12:19:33
tu n'as pas un espace qui se rajouterait au début ou à la fin de tes fichiers ?
ou un message d'erreur
est ce que tu as essayer de comparer le fichier source et le fichier récupéré avec un éditeur de texte ?
Marsh Posté le 04-05-2011 à 12:24:15
Pas d'espace sinon l'accès au fichier ne serait même pas possible.
Là, le fichier est trouvé et lu, mais semble plus ou moins corrompu au download suivant leur types.
Pas essayé la comparaison. tu conseilles un éditeur hexa en particulier pour e rôle ?
Marsh Posté le 04-05-2011 à 12:28:24
je ne suis pas aussi catégorique que toi sur les espaces , certains formats pardonnent plus que d'autres
pour tester : un fichier un peu petit et notepad++ (en texte) ou ultraedit (en hexa)
Marsh Posté le 04-05-2011 à 12:36:34
J'ai vérifié le champ FILE_NAME et il apparait correct, sans espace ni avant ni après.
Marsh Posté le 04-05-2011 à 14:26:30
c'est fichier_data qui peut poser problèmes
Marsh Posté le 04-05-2011 à 16:11:04
A quel moment dans le code tu pourrais penser qu'un espace pourrait se glisser pour le data ?
Marsh Posté le 04-05-2011 à 22:21:16
Compare les fichiers avant et apres upload, des erreurs se situent surement avec les caractères ' / "
Marsh Posté le 05-05-2011 à 12:47:46
Mais plus globalement, c'est quand même surprenant que tout fonctionnait nickel et que depuis l'upgrade du serveur, les fichiers soient corrompus, non ?
Marsh Posté le 05-05-2011 à 13:14:57
Le php.ini peut etre différent
Puis entre php 4 et 5.3+ ya de GROSSES différences...
C'est la ou un dev qui connait bien php devient important ...
Marsh Posté le 05-05-2011 à 14:23:59
J'ai essayé une méthode alternative en stockant le fichier sur le serveur et en ne mettant que le lien.
Le fichier est bien valide sur le serveur, mais j'ai l'impression que c'est au moment de la lecture du fichier que la corruption se fait !
Pourtant le code est tout ce qu'il y a de standard, j'ai l'impression...
Code :
|
Marsh Posté le 04-05-2011 à 11:46:38
Bonjour,
J'avais un process d'upload et de lecture de fichiers en PHP dans une table MySQL et un champ de type longblob.
Auparavant, j'étais sur un environnement datant de 5 ans, en PHP 4.
Nous sommes passés récemment sur php 5.3.2 et mysql 5.1.41.
Depuis, certains types de fichiers présentent des anomalies avec le traitement d'extraction pour les télécharger sur une page, mais je ne sais pas l'origine du problème.
Par ex, tous les documents Office 2003 sont corrompus ("Impossible de démarrer le convertisseur mswrd632.wpc" )
Pour les docs Office 2007 (en Open XML donc), il y a un message d'erreur à l'ouverture mais est ensuite proposé de réupérer le contenu illisible et le document s'affiche correctement ensuite.
Pour les pdf, aucun soucis.
Je ne sais pas si cela est du au code PHP qui ne serait plus à jour, ou à un problème de codage par rapport à MySQL ?
Vous avez des pistes ?
Pour info, voici le code de la fonction qui traite le contenu du fichier inséré au moment de la requête INSERT.
Il y a t-il mieux à faire ?
Merci à vous, je suis vraiment bloqué...si vous avez des pistes pour tester en profondeur l'origine de la corruption..
et le code de l'appel au fichier sur la page de téléchargement
Message édité par AirSonic le 04-05-2011 à 11:53:05