[Python/html/flask] obtenir le path d'un fichier
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

[Python/html/flask] obtenir le path d'un fichier



  1. #1
    Loupsio

    [Python/html/flask] obtenir le path d'un fichier


    ------

    Bonjour à tous,

    J'utilise flask pour déployer du code python qui va parser un document texte, ceci marche bien quand je défini en brut le dossier ou se trouve le fichier à parser, mais je souhaite faire en sorte que l'utilisateur puisse sélectionner un fichier n'importe ou sur son pc, sur la page j'ai donc ajouté un bouton "parcourir" (type="file") où l'utilisateur doit sélectionner un fichier sur son pc,

    le but était que ensuite le chemin soit renvoyé à python pour qu'il retrouve le fichier et le parse
    Cependant en fouillant un peu j'ai cru comprendre que par mesure de sécurité les browser ne renvoient que le nom du fichier sélectionné mais pas le chemin, ma question donc, comment est-ce que l'on peut faire pour que python puisse retrouver le fichier sans avoir à faire écrire à l'utilisateur le chemin complet avec un champs de texte ?
    Si on ne peut pas, d'aucune manière, alors je ne comprend pas l'intéret d'implémenter un bouton "parcourir" en html

    Merci à vous

    -----

  2. #2
    pm42

    Re : [Python/html/flask] obtenir le path d'un fichier

    Ce que va recevoir ton serveur Web, qu'il soit en python ou pas, c'est le nom du fichier qui est là à titre d'information et le contenu du fichier.

    Avoir le chemin complet n'a aucun sens : le navigateur et le fichier sont pratiquement tout le temps sur une autre machine et donc ton serveur Web ne peut pas y accéder.

    La doc flask donne des exemples de réception de fichier avec sauvegarde dans un répertoire temporaire (ce qui peut ne pas être nécessaire dans ton cas).

  3. #3
    Loupsio

    Re : [Python/html/flask] obtenir le path d'un fichier

    Citation Envoyé par pm42 Voir le message
    Ce que va recevoir ton serveur Web, qu'il soit en python ou pas, c'est le nom du fichier qui est là à titre d'information et le contenu du fichier.
    Ah, alors c'est ca que je n'avais pas compris je croyais qu'il ne renvoyait que du texte, du coup effectivement je n'aurai pas besoin du chemin dans ce cas, En revanche quand j'essaie de parser le fichier que l'on a sélectionné à l'aide du "parcourir", que je récupère avec :
    Code:
    <form action="{{ url_for('analyzefichier') }}" method="POST">
       <input class="button is-primary" type="file" id="myfile" name="myfile"><br><br>
       <button class="button is-primary" type="submit">Valider</button>
    </form>
    et dans la fonction analyzefichier je récupère avec :
    Code:
       
     if request.method == 'POST':
            myfile = request.form['myfile']
            test=parser.from_file(myfile)
    Il me renvoi :
    Code:
     test=parser.from_file(myfile)
      File "C:\Users\...\anaconda3\Lib\site-packages\tika\parser.py", line 40, in from_file
        output = parse1(service, filename, serverEndpoint, headers=headers, config_path=config_path, requestOptions=requestOptions)
      File "C:\Users\...\anaconda3\Lib\site-packages\tika\tika.py", line 335, in parse1
        with urlOrPath if _is_file_object(urlOrPath) else open(path, 'rb') as f:
    
    FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\...\\Documents\\fichier.pdf'
    Pourtant si la variable contient le contenu du fichier, il devrait être capable de parser le fichier avec parser.from_file() non?,
    Au lieu de ca il me renvoi le chemin du fichier en me disant que ce fichier n'existe pas

  4. #4
    pm42

    Re : [Python/html/flask] obtenir le path d'un fichier

    Parce que tu n'as pas sauvé le fichier comme indiqué dans le doc et les exemples.

    Ta variable myfile contient un nom de fichier cible et un stream représentant les données.
    Par défaut, on le sauve dans un répertoire temporaire (comme expliqué ici : https://flask.palletsprojects.com/en...s/fileuploads/) ce qui va vite.

    Puis, on fait le traitement en le relisant depuis ce fichier temporaire, ce qui éventuellement peut être fait en tâche de fond si c'est lent.

    Si tu veux lire directement, il faut chercher un peu et faire comme indiqué ici https://stackoverflow.com/questions/...hout-saving-it.

  5. A voir en vidéo sur Futura
  6. #5
    Loupsio

    Re : [Python/html/flask] obtenir le path d'un fichier

    J'étais tombé sur le premier lien, mais je voyais pas trop a quoi correspondait le path du "UPLOAD_FOLDER" vu que ca peut pas etre un dossier de la machine de l'utilisateur, et donc je comprenais pas trop,
    Ducoup en y re réfléchissant ca doit correspondre à un sous dossier de là ou il y a mon fichier app.py, a coté du dossier "template" ou il y a le code html, c'est ca ?

    Je garde le deuxième lien sous le coude au cas ou je galère toujours avec la doc flask , mais pour l'instant je pense que ca devrait le faire du coup,

    Merci bien

Discussions similaires

  1. lecture en local d'un fichier html
    Par zyket dans le forum Internet - Réseau - Sécurité générale
    Réponses: 8
    Dernier message: 26/12/2019, 17h22
  2. copier formules fichier html à word
    Par said76 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 06/01/2019, 23h00
  3. exécution d'un fichier python rattaché à un fichier kivy
    Par invite8218ab1b dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 24/11/2014, 15h43
  4. Accès a un fichier crypté par mot de passe a travers une page HTML
    Par invitee1deb610 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 19/11/2011, 17h25
  5. mise à jour fichier html créé à partir d'un modèle
    Par invite97ef6aa5 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 25/12/2009, 18h07