Appeler la boîte Ouvrir de Windows

Eléphanteau du PHP | 37 Messages

05 juil. 2011, 14:03

Bonjour

Pourriez-vous s'il vous plaît m'indiquer comment je peux ouvrir la boîte de dialogue Ouvrir de Windows et comment je peux récupérer le fichier sélectionné ? (J'ai besoin de pouvoir sélectionner le fichier html qui sera traité par mon programme php. Il me faut donc pouvoir limiter la boîte de dialogue aux seuls fichiers html ou htm. Pour l'instant, je place le chemin du fichier dans l'instruction file_get_contents mais ce n'est pas vraiment une solution satisfaisante pour les utilisateurs du programme.)

Merci grandement d'avance

ViPHP
xTG
ViPHP | 7331 Messages

05 juil. 2011, 15:47

Un input de type file ? (HTML)
Et ensuite tu regardes le type MIME du fichier pour vérifier que c'est bien ce que tu cherches.
Ou plus basiquement tu split le nom du fichier pour extraire l'extension.

Eléphanteau du PHP | 37 Messages

05 juil. 2011, 16:13

Merci de ta réponse

Je crains cependant que je n'aies pas vraiment le niveau requis pour la comprendre.

Peux-tu m'expliquer un peu s'il te plaît ? :)

VaN
Mammouth du PHP | 1107 Messages

05 juil. 2011, 17:10

pour le formulaire :
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="fichier" />
<input type="submit" name="btn-submit" value="Envoyer" />
</form>
Ensuite, lorsque tu traite les données postées, en PHP (méthode rapide, on vérifie l'extension du fichier, mais le plus propre serait de vérifier le type mime) :
<?php
$extension = substr($_FILES['fichier']['tmp_name'], strrpos($_FILES['fichier']['tmp_name'], ".") + 1, strlen($_FILES['fichier']['tmp_name']));

if($extension == 'htm' || $extension == 'html') {
// Ok, on traite le fichier
}
else {
// L'extension  n'est pas correcte
}
?>

ViPHP
ViPHP | 5462 Messages

05 juil. 2011, 18:03

$extension = substr($_FILES['fichier']['tmp_name'], strrpos($_FILES['fichier']['tmp_name'], ".") + 1, strlen($_FILES['fichier']['tmp_name']));
utilise pathinfo ...

VaN
Mammouth du PHP | 1107 Messages

06 juil. 2011, 10:59

$extension = substr($_FILES['fichier']['tmp_name'], strrpos($_FILES['fichier']['tmp_name'], ".") + 1, strlen($_FILES['fichier']['tmp_name']));
utilise pathinfo ...
Je connaissais pas, merci : )

Eléphanteau du PHP | 37 Messages

06 juil. 2011, 14:48

Merci de vos réponses et pardon pour le retard avec lequel arrive ma propre réponse (j'étais pris sur d'autres points de programmation, puis j'ai voulu expérimenter les techniques proposées).

Effectivement, pathinfo est bien pratique.

Petites questions complémentaires :

1) Par défaut, le bouton appelant la fenêtre Ouvrir de Windows est un bouton texte ayant pour libellé Parcourir. Comment puis-je afficher une image à la place du bouton par défaut, définir un autre texte ou styler ce bouton ?

2) Comment faire pour dimensionner ou styler le champ de saisie du fichier (le premier input) ? J'ai essayé d'écrire
<p><input type="file" name="file_name" style="width:250px" /></p>
mais ça ne marche pas.

Merci par avance

ViPHP
xTG
ViPHP | 7331 Messages

06 juil. 2011, 15:34

Styliser ce champ est assez compliqué car il est propre à chaque navigateur...
Un peu de lecture pour t'en rendre compte : http://www.quirksmode.org/dom/inputfile.html

Eléphanteau du PHP | 37 Messages

06 juil. 2011, 16:57

Effectivement...

J'approfondirai la question ultérieurement.