|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Invité de passage
![]() Étudiant Inscription : mars 2007 Messages : 4 ![]() |
Bonjour
Je suis tombé sur un casse tête qui n'en est peut-être pas un, et j'aimerais vos lumières. Je débute en PHP (plus ou moins) et je code en ce moment un script qui me permet de formater le contenu d'un fichier XML grâce à XSLT avec PHP4. Code :
Code :
Mais voilà : le projet prévoit qu'un utilisateur sélectionne son fichier local et l'envoie au serveur distant pour que celui-ci l'utilise. Pour ce faire, j'uploade le fichier via un formulaire. Code html :
Et je récupère le fichier. Code :
Il faut que je trouve un moyen de le conserver... Mais comment ? J'ai pensé enregistrer le fichier sur le serveur après upload grâce à move_uploaded_file(). Mais : - Plusieurs utilisateurs peuvent accéder au script en même temps. Donc je ne peux pas sauvegarder le fichier sous un nom fixe. - Plusieurs utilisateurs peuvent (cas exceptionnel, mais tout de même...) envoyer le même fichier en même temps. Donc je ne peux pas le sauvegarder sous son nom initial. - Le fichier est "sensible" car personnel. Il doit être supprimé. Bref ça m'a l'air très compliqué. N'y a-t-il pas une méthode qui me permettrait de lire le fichier une fois et une seule pour le conserver jusqu'à ce que l'utilisateur ait quitté le script ? (j'en doute fort, mais qui ne tente rien n'a rien... Ou sinon, quelle serait la bonne méthode pour sauvegarder mon fichier (et si possible le supprimer après utilisation...) dans un dossier 'xml/' par exemple ? Si ça manque de précision, dites le moi ¬_¬ Mais sur le moment, je ne vois pas trop quoi rajouter... Merci d'avance ! |
||||||||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Tu peut stocker le fichier sous un nom impossible à trouver (chaîne MD5) ou alors le stocker dans les sessions mais ca serai bien lourd !
Sinon MySQL propose un type de champ "blob" qui permet de stocker des données binaire dans la base de donnée.
__________________
http://www.ape-project.org/ |
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Étudiant Inscription : mars 2007 Messages : 4 ![]() |
Citation:
Je n'utilise pour l'instant pas de table MySQL dans le projet et j'aurais aimé m'en passer... Et effectivement, le MD5 risque d'être trop gourmand. N'y a-t-il pas un moyen pour repasser le fichier ou le contenu du fichier par la méthode POST, en passant par le fichier temporaire ? : Fichier local -> Fichier temporaire sur le serveur -> Nouveau fichier temporaire à chaque chargement... Merci encore |
|
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Tu peut gérer toi meme les temporaires
/mes_tmp/uniqid.tmp -> Stock le nom dans une sessions Et quand ta plus besoin tu "unlink". Ps : Pourquoi trop lourd MD5 ?
__________________
http://www.ape-project.org/ |
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Étudiant Inscription : mars 2007 Messages : 4 ![]() |
J'ai finalement résolu mon problème après avoir découvert les sessions en PHP.
je stocke simplement le contenu du fichier dans une variable de session $_SESSION['text'] que je peux ainsi récupérer dans n'importe quelle page tant que l'utilisateur ne s'est pas déconnecté ou n'a pas fermé son navigateur. Code :
Voilà, merci encore pour l'aide. |
||
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Fait quand même gaffe, la taille limite des sessions est souvent limitée
__________________
http://www.ape-project.org/ |
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Étudiant Inscription : mars 2007 Messages : 4 ![]() |
Citation:
J'ai trouvé ici : http://www.developpez.net/forums/sho...d.php?t=245337 que la limite de taille globale était "à priori, purement physique". Si c'est une limite par session, les fichiers que je passe pèsent au maximum 500 ou 600 kilo octets, mais en moyenne plutôt 10 ou 20. C'est avec les premiers cas, extrêmes, que j'ai testé mon code, et ça passe (pour le moment). Mais si il y a une limite, je peux toujours préciser la taille maximum à uploader en rajoutant la ligne suivante : Code :
<INPUT type=hidden name=MAX_FILE_SIZE VALUE=LABONNETAILLE> |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com