IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ouvrir un Input type="file" toujours dans le même répertoire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut Ouvrir un Input type="file" toujours dans le même répertoire
    Bonjour à tous,

    j'utilise un input de type file pour que l'utilisateur puisse sélectionner un fichier, mais le bouton "Parcourir" ouvre la fenêtre de sélection toujours sur le bureau.
    Je voudrai pouvoir forcer cette ouverture dans un répertoire bien précis.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <INPUT name="B_Parcourir" type="file" id="B_Parcourir" onChange="ChargementFichier()" value="" LANGUAGE="javascript" />

    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Tu ne peux pas. C'est le navigateur qui décide et il mémorise l'emplacement de la dernière exploration pour les navigateurs un peu évolués (il est possible que certains ne mémorisent rien du tout auquel cas on repart toujours du bureau).

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Tu ne peux pas. C'est le navigateur qui décide et il mémorise l'emplacement de la dernière exploration pour les navigateurs un peu évolués (il est possible que certains ne mémorisent rien du tout auquel cas on repart toujours du bureau).
    Oui ! Mais on peut interférer dans le choix du fichier en utilisant l'attribut accept. Par exemple : <input type="file" accept=".png, .jpg">.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut
    Merci de vos réponses, mais l'attribut "accept" n'est pas suffisant pour nos utilisateurs.

    Et en utilisant les ActiveX ? Il n'y aurait pas une possibilité ?
    (Je sais que ce n'est pas conseillé, mais nous les utilisons en interne depuis longtemps)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Zebulon777 Voir le message
    ..Je voudrai pouvoir forcer cette ouverture dans un répertoire bien précis
    Euh...

    1/ c'est forcément sur l'ordinateur de l'utilisateur ?
    Comment peux-tu savoir si ce répertoire existe ?
    Ou même penser pouvoir l'imposer ?

    2/ A moins que le tout soit en local, et que tu sois... l'utilisateur en question ?

    3/ Ou encore on est sur serveur distant, et tu veux sélectionner un fichier dans un dossier LUI AUSSI déjà sur le serveur distant ?


    si on est sur le même serveur (tu as un programme en local)
    j'entrevois, peut-être, une solution... détournée.

    1/ un simple bouton "Parcourir"...
    2/... qui ouvre un "exploreur de dossier/fichiers", affichant le contenu du dossier ciblé.
    3/ un clic sur le fichier -> on remplit (via JavaScript) un <input type="file"> avec l'URL (absolue) du fichier sélectionné

    à TESTER ! (j'ai des gros doutes...)
    Je doute que ça fonctionne avec un <input type="file">, pour des raisons de sécurité.

    (autre solution ?) si on est sur le même serveur (local, ou distant), on peut, en PHP :
    • aller sélectionner un fichier(sur le même principe d'"explorateur de dossier"),
    • puis le COPIER dans un autre répertoire (il n'y a pas à proprement parler d'"upload" si on est sur le même serveur )

    On n'aura besoin pour ça QUE de l'URL (absolue) du fichier sélectionné
    Dernière modification par Invité ; 20/12/2016 à 10h27.

  6. #6
    Membre éprouvé Avatar de Zebulon777
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 1 327
    Par défaut
    En fait, nous utilisons depuis longtemps IE comme interpréteur, donc l'application est sur un disque réseau, mais est exécuter en local, c'est grâce à cela que nous pouvons utilise les ActiveX (File System Object).

    L'application est donc dans un répertoire bien définit et il faudrait donc que le "Parcourir" pointe dans ce répertoire par défaut.

    Actuellement, le bouton "Parcourir" fonctionne impec, mais la seule modification que nos utilisateurs demandent, c'est qu'il pointe sur le répertoire de l'appli par défaut et non sur le bureau, pour leur faire gagner du temps.

    "3/ un clic sur le fichier -> on remplit (via JavaScript) un <input type="file"> avec l'URL (absolue) du fichier sélectionné" : je ne comprends pas ce que tu veux dire.

    Je ne connais pas du tout le PHP, donc ça va être encore plus compliqué

    Je vous mets le code, mais je ne pense pas que ça puisse aider.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <INPUT name="B_Parcourir" type="file" id="B_Parcourir" onChange="ChargementFichier()" value="" LANGUAGE="javascript" />

    Voici la fonction de chargement du fichier, au cas où ça pourrait servir
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    45
    46
     
    function ChargementFichier() {
    	var WFichierInPerf = window.Form_INPERF.B_Parcourir.value;
    	var WFichierInPerf00 = WFichierInPerf.split("\\");
    	WFichierInPerf01 = WFichierInPerf00[WFichierInPerf00.length-1]; // Contient le nom du fichier seul.
    	if (WFichierInPerf01 != "")
    	{
    		WFicUPC = WFichierInPerf01.toUpperCase();
    		if (!Contient(WFicUPC, "INPERF_CDG"))
    		{
    			alert("Ce fichier n'est pas un fichier utilisable par l'application 'InPerf.CDG'.");
    			window.Form_INPERF.reset();
    			InitDate();
    			Init();
    		}
    		else
    		{
    			WDate = WFichierInPerf01.substr(0); // On sélectionne du 5ème car jusqu'à la fin.
    			WDate = WDate.substr(0, 8); // On sélectionne les 8 prmeiers caractères.
    			WTestNUMERIQUE = new RegExp("^[0-9]+$");
    			WTestNUMERIQUE.test('');
    			if (WTestNUMERIQUE.test(WDate) == false) // Test si la variable Date ne contient QUE des chiffres.
    			{
    				alert("Impossible de récupérer la date dans le nom du fichier sélectionné." + G_CrLf + "Le nom du fichier doit impérativement être du type 'aaaa_mm_jj_InPerf_CDG.TXT'.");
    				window.Form_INPERF.reset();
    				InitDate();
    				Init();
    			}
    			else
    			{
    				Init();
    				WFic_InPerfCDG = G_ACTX_FSO.OpenTextFile(WFichierInPerf, 1);
    				while (!WFic_InPerfCDG .AtEndOfStream)
    				{
    					var WLigneTXT = WFic_InPerfCDG.ReadLine();
    					if (WLigneTXT.substr(0,3) != "###")
    					{
    						LigneFichier(WLigneTXT, WFic_InPerfCDG);
    					}
    				};
    				WFic_InPerfCDG.close();
    				ClearInputFile("B_Parcourir");
      			}
    		}
    	}
    }

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo