Upload et enregistrement lien dans une page html [Résolu]

Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
- - Dernière réponse : gandalf76fr
Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
- 9 mai 2006 à 14:10
bonjour,
je sollicite votre aide dans le cadre de la cration d'un site internet pour un departement d'anesthesie / reanimation dont je fait partie.

Sur ce site une des section contient une liste de protocoles medicaux non confidentiels. Je les uploads selon mes dispos quand on me les fournit.

Mais pour simplifier et surtout augmenter la reactivité je cherche a donner un moyen simple pour les auteurs de protocoles, afin qu'ils puissent eux meme upload leurs protocoles dans un dossier donné et qu'un lien se crée automatiquement dans la page protocole.

Dans une page apres identification
je proposerait un formulaire du type :

Catégorie de protocole
Titre du protocole
Fichier a telecharger (avec une box permetant le parcour du hdd de l'emeteur.

Et je voudrait donc que le fichier se telecharge dans le dossier protocole du serveur
Et qu'un lien se crée dans la page protocole avec le bon titre et dans la bonne catégorie.

j'ai pensé eventuelement a utiliser une bdd pour gerer les titre / liens.

mais je n'ai pas trouvé de scripts d'upload que j'arriverai a adapter avec mes queques connaissances en php.

Merci d'avance de votre aide.
Afficher la suite 

17 réponses

Meilleure réponse
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
3
Merci
Pour le problème avec IE il suffit de supprimer "this.disabled=true" sur le bouton d'envoi.

Spyro666 contre le 555

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_spyro666
Messages postés
237
Date d'inscription
lundi 20 mai 2002
Statut
Membre
Dernière intervention
22 juillet 2011
2
0
Merci
Salut,

Effectivement le plus simple est d'utiliser une base de données... Ca sera à mon avis plus simple que de faire la modification de ton fichier HTML à chaque ajout d'un protocole. Une fois que le fichier a été correctement uploadé, tu ajoutes une ligne dans ta base de données, qui liste tous les protocoles qui ont été uploadés sur le serveur...
Recherche un tuto sur les bases SQL, tu verras que c'est vraiment pas compliqué... Cherche sur ce site, tu trouveras certainement quelque chose, ou alors phpdebutant.org est pas mal en ce qui concerne l'apprentissage SQL...

Bonne journée ++
Commenter la réponse de platon179
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
0
Merci
Je crois qu'il cherches plus a avoir un script d upload plutot que un
tuto sur les requetes SQL ... je pourrais te filer un script d upload
mais je l ai pas sur moi il est sur mon pc perso donc pas avant ce soir


Pour ce qui est de la creation de tes liens tout ça suffit d'un peu de logic et un peu d huile de coude ! llooll


-------------------------------------------------------------------------------------------------------

Il vaut mieux poser une question et passer pour bête que le rester
toute sa vie
Commenter la réponse de Teclis01
Messages postés
237
Date d'inscription
lundi 20 mai 2002
Statut
Membre
Dernière intervention
22 juillet 2011
2
0
Merci
Disons qu'il lui faut les deux alors xD
Apres l'upload, il pensait a stocker la liste des protocoles dans une bdd, ce qui est pas une mauvaise idée en soit ;)
Commenter la réponse de platon179
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
0
Merci
Voilà ce qu'il te faut :

<?php

/* Page d'upload de fichiers */

if(!empty($_FILES['up'])) {

echo '';
print_r($_FILES['up']);
echo '

';

if(@copy($_FILES['up']['tmp_name'],'up_dossier/'.$_FILES['up']['name'])) {

echo 'Fichier uploader avec succès!';

}else {

echo 'Erreur lors de l\'upload du fichier!';

}


}
?>
<form method="post" enctype="multipart/form-data">
Fichier à uploader :, ,
----

</form>

<?php

/* page d'affichage des fichiers */

?>

Protocoles médicaux non-confidentiels,

<?php

$dir = 'up_dossier/';

if($handle = opendir($dir)) {

echo '----
Nom du fichier, Dernière modification, Taille, ';

while($file = readdir($handle)) {

if(is_file($dir.$file)) {
// je sépare le nom du fichier par les points afin de pouvoir afficher un nom convenable sans extension.

$FileName = explode(\".\",$file);

unset($FileName[count($FileName)-1]);

$count = count($FileName);

for($i = 0;$i < $count;$i++) {

$NewFileName .= $FileName[$i];

}
// Je récupère la taille du fichier

$Size = filesize($dir.$file);

if($Size >= 1024*1024*1024*1024) { // Pour les Terra octets (portabilité oblige ^^')

$Size = round(($Size/(1024*1024*1024*1024)),2). 'To';

}elseif($Size >= 1024*1024*1024) { // Pour les Giga octets (on ne sait jamais ...)

$Size = round(($Size / (1024*1024*1024)),2) .' Go';

}elseif($Size >= 1024*1024) { // Pour les Mégas octets (pas trop rare je pense ...)

$Size = round(($Size / (1024*1024)),2) . ' Mo';

}elseif($Size >= 1024) { // Pour les Kilo octets (les moins rares);

$Size = round(($Size/1024),2) . ' Ko';

}else { // Pour les moins d'un Kilo octet (plutôt rare je dirais...)

$Size .= ' Octets';

}

// Pour l'affichage de la date j'utilise strtime ce qui permet de faire un affichage en français.
setlocale(LC_TIME,\"fr\");
// Quand j'ai fait tout ça j'affiche le nouveau nom du fichier avec ça taille et la date de la dernière modification.
echo '----
'.$NewFileName.', '.strftime("%A, %d.%m.%Y ",filemtime($dir.$file)).', '.$Size.', ';

}
}
}
?>

Spyro666 contre le 555
Commenter la réponse de cs_spyro666
Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
0
Merci
Pour ton script, je viens de test et 2 choses :

1 il se fige lors de l'upload du fichier en me laissean veuillez patienter. j'ai bien chmod en 777 le dossier du script, créé un dossier "up_dossier" chmodé en 777 a la racine du site puis dans le dossier ou j'ai mis ce script mais rien n'y change, quand on clique sur upload il reste figé en nous indiquant veuillez patienter. Auriez vous une solution ?

2 il ne permet pas d'inscrire son propre nom de protocole, il par du nom de fichier pour le creer. Sachant que des gens vraiment debutant utiliseront ce script, ils ne sauront pas tous rennomer les fichiers pour avoir un titre correct, donc il me faut pourvoir entrer cette variable la dans la page de creation des liens.

Mais sinon, ton script si j'arrive a le faire marché pourrait en effet servir de base a ce que je veux faire. Je vois qu'il n'utilise pas de base de donnée mais gere les variable directement entre les pages, je ne sais aps si c'est mieux ou moins bien que la bdd ?

Enfin, pour répondre aux messages précédents, en effet, je cherche un script d'upload plutot qu'un tuto pour les requetes sql, et le but est que je n'ai aps a intervenir, donc si utilisation de bdd, que le script ajour lui meme les infos du fichier dans la bdd.
Commenter la réponse de gandalf76fr
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
0
Merci
En fait c'est normal qu'il reste figé... Tout dépend de la taille de ton fichier il faut penser que la vitesse d'upload est généralement 10 fois inférieure à la vitesse de download. Ce qui fait que si tu as du 5 M (soit 600 Ko en down) tu auras du 500k en up (soit 60ko) donc pour un fichier d'un méga il te faut a peu près 16 secondes pour qu'il soit uploader, mais ça on ne peux rien y faire.

Ensuite pour le nom c'est pas vraiment un problème, je posterai ça cette après midi quand j'aurai le temps.

Spyro666 contre le 555
Commenter la réponse de cs_spyro666
Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
0
Merci
Non, ca vient pas de la, j'y est pensé. Deja au domicile, ma ligne est en 4mb/1mb, et a l'hopital, nous sommes fibrés, donc avec une bp bien plus grande.
Ensuite, j'ai fait l'essai avec des fichiers de 30 à 100ko, donc tout petit juste pour test, et le script reste bien figé et n'upload rien.

voila les pages si tu veux test :
http://sls.nelly-informatique.fr/upload/upload.php
http://sls.nelly-informatique.fr/upload/protocole.php

elles sont sur un serveur dédié de test (un 300g chez ovh.
Commenter la réponse de gandalf76fr
Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
0
Merci
Petits changements : sous firefox, aparement le script marche. Mais pas sous internet explorer.
Sinon sur la page protocoles.php, il affiche bien les fichers mais sans liens (enfin ca doit etre simple a résoudre ca je pense).


Comment faire pourque ca marche aussi sous ie svp ?
Commenter la réponse de gandalf76fr
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
0
Merci
Euh oui effectivement j'ai oublier de mettre les liens à la génération des cellules ^^' . Encore qqch à arranger. Je met ça dès que j'ai fini ma partie d'age.

Spyro666 contre le 555
Commenter la réponse de cs_spyro666
Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
0
Merci
et pour internet explorer, comment faire pour que ca marche svp ?
Commenter la réponse de gandalf76fr
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
0
Merci
En fait la partie de Age est tombé à l'eau alors voilà ce que ça donne :

<?php

/* Page d'upload de fichiers */

if(!empty($_FILES['up'])) {

echo '';
print_r($_FILES['up']);
echo '

';

if(isset($_POST['file_name'])) {

$FileName = $_POST['file_name'];

$fileArgArray = explode(".",$_FILES['up']['name']);

$FileName .= ".".$fileArgArray[count($fileArgArray)-1];
}else{

$FileName = $_FILES['up']['name'];

}

if(@copy($_FILES['up']['tmp_name'],'up_dossier/'.$FileName)) {

echo 'Fichier uploader avec succès!';

}else {

echo 'Erreur lors de l\'upload du fichier!';

}


}
?>
<form method="post" enctype="multipart/form-data">
Fichier à uploader :, ,
----
Nom de fichier désiré :, ,
----
,
----
Voir tous les fichiers uploaders

</form>

Ainsi que :

<?php

/* page d'affichage des fichiers */

?>

Protocoles médicaux non-confidentiels,

<?php

$dir = 'up_dossier/';

if($handle = opendir($dir)) {

echo '----
Nom du fichier, Dernière modification, Taille, ';

while($file = readdir($handle)) {

if(is_file($dir.$file)) {
// je sépare le nom du fichier par les points afin de pouvoir afficher un nom convenable sans extension.

$FileName = explode(\".\",$file);

unset($FileName[count($FileName)-1]);

$count = count($FileName);

for($i = 0;$i < $count;$i++) {

$NewFileName .= $FileName[$i];

}
// Je récupère la taille du fichier

$Size = filesize($dir.$file);

if($Size >= 1024*1024*1024*1024) { // Pour les Terra octets (portabilité oblige ^^')

$Size = round(($Size/(1024*1024*1024*1024)),2). 'To';

}elseif($Size >= 1024*1024*1024) { // Pour les Giga octets (on ne sait jamais ...)

$Size = round(($Size / (1024*1024*1024)),2) .' Go';

}elseif($Size >= 1024*1024) { // Pour les Mégas octets (pas trop rare je pense ...)

$Size = round(($Size / (1024*1024)),2) . ' Mo';

}elseif($Size >= 1024) { // Pour les Kilo octets (les moins rares);

$Size = round(($Size/1024),2) . ' Ko';

}else { // Pour les moins d'un Kilo octet (plutôt rare je dirais...)

$Size .= ' Octets';

}

// Pour l'affichage de la date j'utilise strtime ce qui permet de faire un affichage en français.
setlocale(LC_TIME,\"fr\");
// Quand j'ai fait tout ça j'affiche le nouveau nom du fichier avec ça taille et la date de la dernière modification.
echo '----
'.$NewFileName.', '.strftime("%A, %d.%m.%Y ",filemtime($dir.$file)).', '.$Size.', ';

}
}
}
?>

Spyro666 contre le 555
Commenter la réponse de cs_spyro666
Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
0
Merci
Merci.

2 petits problemes encore :

Ne marche toujours pas sous internet explorer, alors que ok sous mozilla, je ne vois helas pas pourquoi ???

Et pour l'enregistrement du nom de fichier dans le tableau, il y a un soucis : il ajoute a chaque fois le nom du fichier précédent au nom que j'inscrit :

http://sls.nelly-informatique.fr/upload/affiche.php
Commenter la réponse de gandalf76fr
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
0
Merci
Oui je venais de remarquer le problème(c'est ça de faire des tests avec 1 seul fichier -_-').

Il faut ajouter la ligne $NewFileName = ''; après le unset();

Est ce que tu as supprimé la commande this.disabled=true; ?

Spyro666 contre le 555
Commenter la réponse de cs_spyro666
Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
0
Merci
Le $NewFileName = ''; arrange en effet le probleme des noms de fichier. Merci beaucoup.

Ensuite pour la commande a suprimer, non je ne l'ai aps suprimée, il faut le faire ? cela permetrai il que ca marche sous ie ?

enfin si ce n'est pas trop demander, est il posssible d'ajouter dans le script d'upload un menu deroulant permetant de choisir une catégorie ?et dans la pages d'affichage d'ordonner les protocoles dans différentes catégories ?

C'est vrai que j'etais partit sur une idée avec une bdd mais votre méthode est vraiment plus simple (mme si j'ai aps encore tout compris sur son fonctionnement).
Commenter la réponse de gandalf76fr
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
0
Merci
Est ce qu'on pourrait en discuter par mail?Ca serait plus simple et encombrerait moins le forum ^^.

->[mailto:tazmaniack@gmail.com tazmaniack@gmail.com]

Spyro666 contre le 555
Commenter la réponse de cs_spyro666
Messages postés
20
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
3 octobre 2006
0
Merci
Vi,
Commenter la réponse de gandalf76fr