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..
Code :
- function getFileData($field_name) {
- global $vg_path_pdf_cp;
- //printf ("vg_path_pdf_cp: %s\n", $vg_path_pdf_cp);
- if($_FILES[$field_name]["name"] != "" ) {
- $tmpName = $_FILES[$field_name]['tmp_name'];
- $escaped_tmpName = mysql_real_escape_string($tmpName);
- $fp = fopen($escaped_tmpName, 'r');
- $retour = addslashes(fread($fp, filesize($escaped_tmpName)));
- fclose($fp);
- }
- return $retour;
|
et le code de l'appel au fichier sur la page de téléchargement
Code :
- if (isset($_GET['id']))
- {
- include ("connexion.php" );
- $id = intval($_GET['id']);
- $req = "SELECT ID_FILE, FICHIER_MIME, FICHIER_NAME, FICHIER_DATA FROM partage_CONTENUS WHERE ID_FILE = ".$id;
- $ret = mysql_query ($req) or die (mysql_error () );
- $col = mysql_fetch_row ($ret);
- if (!$col[0] )
- {
- echo "Fichier introuvable";
- }
- else
- {
- header ("Content-type: ".$col[1]);
- header('Content-Disposition: attachment; filename='.$col[2]);
- //header ("Content-filename: ".$col[2]);
- echo $col[3];
- }
- }
|
Message édité par AirSonic le 04-05-2011 à 11:53:05