Affichage Fichier JOINT (depuis table MySQL type BLOB) header content
Bonjour,
Si vous avez déjà fait un site qui charge des fichiers joints de tous types? pouvez vous me renseigner.
Je n'arrive pas à afficher un fichier stocké dans un champ BLOB d'une table MySqL (si ce fichier dépasse 100.000 caractéres.).
Voir le document joint.
J'ai mis le source du LOAD du FICHIER et le SOURCE du FICHIER UPLOAD
ainsi que les différents écrans dans le .doc joint
J'ai fait plusieurs essais avec différents navigateurs. (idem).
Je pense avoir un probléme sur la partie HEADER CONTENT mais !!!!!
Bonsoir,
----------------------------
FORMULAIRE permettant le chargement d’un fichier
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<?
$max=1000000;
?>
Joindre un fichier </td><td width="400">
<FORM enctype="multipart/form-data" ACTION="editTicket-simple.php" METHOD='POST'>
<font color='black' face='Verdana' size='1'>
<input TYPE='hidden' name='MAX_FILE_SIZE' value= "<?php $max ?>" car.>
<input TYPE='file' NAME='fich' size=50 MAXLENGTH=80>
</td>
<td><font color="black" face="Verdana" size="1" align="left" >
Attention ! la taille des fichiers est limitée à 1 Mega.
</td>
<input type=hidden name=GRILLE_1_FOIS value="1">
</tr>
</table>
<table border="0" width="900" id="table3">
<tr>
<td width="150"><font color="#990000" font face="Verdana" size="1" align="center">
<input type='submit' name='envoi' value='Enregistrer'>
</FORM> |
-------------------------------------------------
Code:
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
Ecriture dans la table FICHE de la base Mysql
<?php
if (isset ($_POST['envoi']) ) {
$envoi=$_POST['envoi']; }
if ($envoi) {
$_SESSION['fiche_joint']=1;
//echo '-- F I C H I E R-----';
$fich= $_FILES['fich']['tmp_name'];
$taille = $_FILES['fich']['size'];
$type = $_FILES['fich']['type'];
$nom = $_FILES['fich']['name'];
//------------------------------------------------
//----Lecture du COMPTEUR et REECRITURE PLUS 1-----
//------------------------------------------------
$fiche_numero++;
if ($f = fopen( $fich, "r")) {
$contenu=fread($f, $taille);
$donnees=addslashes($contenu);
}
//---------------
//--------------
require('include-ouvert-base.php');
$sql = "INSERT INTO FICHE ( F_NUMERO,F_PIECE_J1,F_PIECE_J1_TAILLE,F_PIECE_J1_NOM,F_PIECE_J1_TYPE)
VALUES('$fiche_numero','$donnees','$taille','$nom','$type')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$new_message = '<font color="red">le fichier joint a été ajouté...</font>';
}
// fin envoi
Une partie de la description de la table FICHE
F_PIECE_J1 blob BINARY Non
F_PIECE_J1_NOM varchar(100) Oui NULL
F_PIECE_J1_TAILLE int(11) Non 0
F_PIECE_J1_TYPE varchar(30) Oui NULL
F_PIECE_J11 blob BINARY Non
F_PIECE_J11_NOM varchar(100) Oui NULL
F_PIECE_J11_TAILLE int(11) Non 0
F_PIECE_J11_TYPE varchar(30) Oui NULL |
----------------------------------------------
Code:
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
Lecture dans la table FICHE de la base Mysql
<?php
session_start();
extract($_POST);
//------------------------------------------------
//---------- ACCES FICHE JOINTE -----J 1--------
//------------------------------------------------
$direct=$_SESSION['direct'];
if($_SESSION['GRILLE_J1']=="1") {
require('include-ouvert-base.php');
$select = "select F_NUMERO,F_PIECE_J1,F_PIECE_J1_NOM,F_PIECE_J1_TAILLE,F_PIECE_J1_TYPE
FROM FICHE WHERE F_NUMERO = '$direct' ";
$result = mysql_query($select,$con)or die('Erreur SQL !'.$select.'<br>'.mysql_error());
$total = mysql_num_rows($result);
if ($total == 0)
{
echo("<br/>");
echo '<font color="red">.....! Numéro de fiche inconnu :';
echo $direct;
echo("</font>");
$_SESSION['direct']=$direct;
?>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FF0000">
Désolé , mais cette fiche n existe pas</font></strong></td>
<?php
break;
}
while($row = mysql_fetch_array($result)) {
$NUMERO=$row[0];
$F_J1=$row[1];
$F_J1_NOM=$row[2];
$F_J1_TAILLE=$row[3];
$F_J1_TYPE=$row[4];
}
header("Content-Disposition: attachment; filename=".$F_J1_NOM.";");
header("Content-Length: ".$F_J1_TAILLE);
header("Content-Type: ".$F_J1_TYPE);
echo $F_J1;
}
echo 'rien'; |
1 pièce(s) jointe(s)
AFFICHAGE Fichier JOINT (depuis table MySQL type BLOB) HEADER CONTENT !
bonsoir,
Voici un document sous word avec le Code et
quelques copies d'écrans pour une meilleure compréhension du probléme.
Je ne sais pas s'il s'agit d'un probléme
- lier au code PHP ,
- au navigateur EXPLOREUR (Internet Exploreur, Mozilla Firefox j'ai mis les derniéres versions),
- ou sur le serveur Web y a t il un parametre qui empeche le téléchargement de piéces trop volumineuse, ...........
donc donc voici un document Word qui reprend mes petits soucis
Merci de vos réponses,
A+