Bonjour à tous,
j'ai un formulaire qui permet d'uploader des fichier pdf. Les fichier sont ensuite enregistrés au format LONGBLOB, dans une base de données MySQL.
Tout ça fonctionne bien, en local sur easyPhp (5.3.9)
Dès que je le met en production, sur un serveur 1and1, ça se complique...
Ca fonctionne pour certains fichiers, et pour d'autre, lorsque j'ouvre le PDF, j'ai le message "le fichier est endommagé".
voila le code pour la class "document"
Voila le traitement de l'upload
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php class document { var $id_document; var $fichier_nom; var $fichier_blob; function nouveau() { $sql = "INSERT INTO `documentation` (fichier_blob, fichier_nom) VALUES ("; $sql.= "'" . addslashes($this->fichier_blob) . "', "; $sql.= "'" . addslashes($this->fichier_nom) . "'); "; if (! mysql_query($sql) ) return mysql_error(); else return true; } } ?>
et le code de la page de download
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php $pdf_blob = ''; $pdf_taille = 0; $pdf_type = ''; $pdf_nom = ''; $oDocument = new document; if ( is_uploaded_file ($_FILES['fichier']['tmp_name']) ) { $pdf_blob = file_get_contents ($_FILES['fichier']['tmp_name']); $pdf_type = $_FILES['fichier']['type']; $pdf_nom = $_FILES['fichier']['name']; if ( $pdf_type == "application/pdf" ) { $oDocument->fichier_blob = $pdf_blob; $oDocument->fichier_nom = $pdf_nom; $oDocument->nouveau(); } } else { ... traitement des erreurs } ?>
Toute proposition sera la bienvenue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php $oDocument = new document; $oDocument->id_document = $_REQUEST['id']; $oDocument->construit_document(); $file_size = strlen($oDocument->fichier_blob); $file_name = $oDocument->fichier_nom; $file_content = $oDocument->fichier_blob; if (empty ($file_size)) { $message = new message(55); die( header("location: document.php?id=" . $_REQUEST['id'] ) ); } header("Content-disposition: attachment; filename=" . $file_name); header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: application/pdf"); header("Content-Length: " . $file_size); header("Pragma: no-cache"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); header("Expires: 0"); ob_clean(); flush(); echo $file_content; ?>
Merci
Gilou.
Partager