jeiragne
Messages postés10Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention10 décembre 2004
-
9 déc. 2004 à 12:48
elnawak
Messages postés27Date d'inscriptionmercredi 3 septembre 2003StatutMembreDernière intervention21 février 2005
-
10 déc. 2004 à 19:15
Bonjour et merci de me répondre,
j'essaye d'enregistrer un .doc (fichier word) dans un champ blob de mysql mais le problème est que je ne sais pas où est le fichier, le code qui suit ne copie pas dans le blob champ1.
Que faut-il faire ?
Merci de m'aider
HecToR_coCHON
Messages postés34Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention27 octobre 2005 9 déc. 2004 à 18:31
Tu peux enregistrer du texte dans une base SQL mais là t'es entrain de lui demander d'enregistrer l'adresse d'un fichier qui n'est même pas au bon format je pense.
Ce que tu peu faire, c'est soit lire le fichier doc que t'as enregistrer avec move_uploaded_file et enregistrer son contenu dans ton champs blob. Sinon tu peux juste enregistrer le chemin d'accès vers ton fichier move_uploaded_filé ( super verbe ) et après pour le relire juste l'appellé en lisant son adresse dans la table sql.
elnawak
Messages postés27Date d'inscriptionmercredi 3 septembre 2003StatutMembreDernière intervention21 février 2005 9 déc. 2004 à 19:37
salut jeiragne !
oui en effet HecToR_coCHON a raison la tu enregistre l'adresse du fichier et non son contenu (ce qui en soit est une bonne idée ca ne surchargera pas ta base pour rien ) mais le probleme c'est que le chemin que tu enregistre dans dans base n'est pas le bon .... tu enregistre "$_FILES[$doc]['tmp_name']" alors qu'il faut faut "$uploaddir . $_FILES[$doc]['name']" c'est la qu'est sotcké ton fichier sur le serveur (et c'est la que tu le trouveras ) sinon si la fonction move_uploaded_file te pose PB utilise copy . (ca marche parieil)
jeiragne
Messages postés10Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention10 décembre 2004 9 déc. 2004 à 19:40
Merci de t'interesser à mon pb et de m'avoir répondu.
Je dois ajouter que j'ai un peux progresser mais j'ai toujours une erreur, voici le dernier code :
elnawak
Messages postés27Date d'inscriptionmercredi 3 septembre 2003StatutMembreDernière intervention21 février 2005 9 déc. 2004 à 20:02
re salut !
la en effet y a un pb tu fais :
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
en fait tu combine deux methodes je m'explique :
soit tu fais
$contents=fread($handle, filesize ($handle)); et non pas 8192 car fread lis un fichier du debut jusqu'a l'endroit specifie par le 2 param (en octect) autrement dis si tu veux tout le fichier filesize ("ton_fichier") .
sinon tu fait :
while (!feof($handle)) {
$contents .= fgets($handle, "nb_octet_arbitraire"); //ex 1024
}
mais pas les deux en meme temps , je sais on veut bien faire mais en prog moins y en a, moins y a d'erreurs ...
sinon le reste de ton code me parait correct mais n'hesite pas si tu as d'autre PB.
@+ et bon courage !
Vous n’avez pas trouvé la réponse que vous recherchez ?
jeiragne
Messages postés10Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention10 décembre 2004 9 déc. 2004 à 20:40
re bonjour,
j'ai encore progresser mais il reste 2 erreurs qui se répètent avec la boucle while et voici les messages d'erreurs :
Warning: feof(): supplied argument is not a valid stream resource in ...
Warning: fgets(): supplied argument is not a valid stream resource in ...
---------------------------------- Source final ------------------------------
move_uploaded_file($_FILES[$doc]['tmp_name'], $_FILES[$doc]['name']) ;
elnawak
Messages postés27Date d'inscriptionmercredi 3 septembre 2003StatutMembreDernière intervention21 février 2005 9 déc. 2004 à 21:09
on va essayer une autre methode beacoup plus simple !
$texte=file_get_contents($handle); //solution a privilegier
plus de boucle while, $texte contient tout ton fichier ! et en plus c'est plus rapide ! (mais je sais pas si ca marche avec tous les type de fichiers faut tester )
sinon si tu veux garder ta boucle while essaie de mettre "rb" (mode binaire ) dans fopen. et si vraiment rien ne marche utilise fread(),je pense que c'est mieux.
PS : je te conseille de faire un file_exits ($handle) (renvoie true ou false) avant toute chose histoire de voir si le fichier est la ou tu pense.on est jamais trop prudent !
en esperant que ca finira pas marcher comme tu le souhaite !
jeiragne
Messages postés10Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention10 décembre 2004 9 déc. 2004 à 23:05
bonsoir,
j'ai testé l'existence du fichier et malheureusement, il n'existe pas.
Peut-être que chez free ce n'est pas possible de lire un fichier de puis un $_FILES ?
j'ai essayé avec $HTTP_POST_FILES, ça ne marche pas mieux
dans mon form il y a bien enctype ..., si je ne met pas enctype ... dans le form, je récupère un nom de fichier lisible d://mes documents ... mais ça ne marche pas mieux !!
j'ai essayé avec "rb" ou "r" c'est pareil !!
jeiragne
Messages postés10Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention10 décembre 2004 10 déc. 2004 à 11:31
Bonjour,
voici ce que je fais pour récupérer la variable document de type file enctype...
$document = $HTTP_POST_VARS["document"] ;
si je mes //$document = $HTTP_POST_VARS["document"] ;
c'est pareil ça ne marche pas, le fichier $avatar_tmp=$_FILES["file"]["tmp_name"] n'est pas trouvé !!
peut-être faut-il faire autre chose et je me trompe, je ne suis pas un expert du dernier php malheureusement lol
de plus j'appelle le même fichier .php qui teste l'existence de certaines variables pour savoir si elles ne sont pas vides mais ça passe à l'intérieur ça c'est bon !!
elnawak
Messages postés27Date d'inscriptionmercredi 3 septembre 2003StatutMembreDernière intervention21 février 2005 10 déc. 2004 à 19:15
bon attend on vas tous reposer a plat pour voir ou se situe le PB:
1)tu envoie ton form
2)tu recupere avec $avatar_tmp=$_FILES["file"]["tmp_name"];
3)tu fais un echo $avatar_tmp
4)file_exits($avatar_tmp)
5)copy($avatar_tmp,"avatar/". $file_name);
normalement ca devrai bugger avant la fin (enfin facon de parler ....)
y faut voir ou ! si tu recoi pas $_FILES["file"]["tmp_name"]; soit ton form est mal parametre (enctype="multipart/form-data" ou action )
si ca marche pas a file_exits() ca peut etre embetant (peut etre que free bloque ....) y a peu de chance quand meme
sinon c'est la methode de copy
voila dis moi ce qui passe pour que je situe bien le bug et apres on arrange ca !