-1
votes

Obtenir des erreurs avec Os.Listdir dans le flacon et Heroku

J'ai une application qui prend l'URL et renvoie un fichier correspondant à celui-ci. Je voulais le pousser sur Heroku mais je reçois cette erreur: ** Fichier "/app/server.py", ligne 1525, dans Upload1 xxx

filenotfounderror: [errno 2] Aucun fichier ou répertoire de ce type: 'Favicon.ico' **

Puis j'ai essayé d'ajouter Favicon.ico dans tous les dossiers et je reçois

** Fichier "/app/server.py", ligne 1525, dans Upload1 < Pré> xxx

notadirectoryError: [errno 20] Pas un répertoire: 'favicon.ico' **

la partie où elle cherche à la lutte est xxx


0 commentaires

3 Réponses :


0
votes

Ce que vous pouvez faire est, vous devez définir upload_folder chemin dans CONFIG comme.

upload_folder = "Votre nom de dossier" Ensuite, vous pouvez obtenir le chemin de fichier comme.

file_path = os.path.abspath (os.path.join (app.config ["upload_folder"], nom de fichier))

Vous pouvez obtenir plus d'informations de ici


9 commentaires

Je vois, mais comment pourrais-je télécharger le fichier dans le dossier sans connaître son nom? Le problème est que je ne peux pas utiliser OS.ListDir. Votre solution semble avoir à connaître le nom du fichier que nous voulons télécharger


Avez-vous vérifié le lien que j'ai partagé


Et connaissez-vous le nom du dossier? Ou vous cherchez dans chaque dossier?


Oui, je connais le nom du dossier mais pas le nom de fichier à l'intérieur de celui-ci. (Il n'y a qu'un seul fichier dans le dossier) et oui, j'ai vérifié le lien et on dirait qu'il a besoin de nom de fichier et de fenteName.


Ok, et vous choisissez le nom de fichier d'un itinéraire, non? Votre itinéraire peut avoir du nom de fichier comme vous avez mentionné `@ app.Route ('/ ')`. Alors maintenant, vous connaissez le nom de famille et le nom de fichier avec vous, alors quel est le problème


oh j'ai écrit le nom de fichier mais c'est le nom de folder, mon mauvais


Oui, j'ai ajouté une autre réponse pour vous, n'oubliez pas d'accepter la réponse si elle aide: D


Non, je ne voulais pas dire cela de cette façon désolé, je voulais dire que j'ai écrit le nom de fichier dans mon code, mais cela reçoit un nom de dossier et je ne reçois pas de nom de fichier. Pardon. J'ai édité ma question initiale


Essayez si cela fonctionne folder_path = os.path.abspath (foldername) music = os.listdir (folder_path)



0
votes
@app.route('/<path:foldername>')
    def upload1(foldername):
        abs_path = os.path.abspath(foldername)
        music = os.listdir(abs_path)
        path_to_file = os.path.join(abs_path, music[0])

        return send_file(
        foldername+"/"+path_to_file,
        mimetype="audio/mp3", 
        as_attachment=True, 
        attachment_filename=path_to_file )
it will first take the foldername from param and then convert into abspath.
then listdir would list all the files, then it will take first file from list and join path.

2 commentaires

@Falseee j'ai mis à jour la réponse, cela fonctionnerait! :). La seule chose est votre dossier devrait être dans le répertoire racine.


Oui, ça fait :) Le mien fait aussi, j'ai juste oublié d'ajouter le / (myfileName) après l'URL ... je suis tellement stupide. Merci



0
votes

OK, je me sens stupide en ce moment. Le problème est que lorsque je l'ai fait Heroku ouvert, j'ai eu l'erreur instantanément. Mais je l'ai eu parce que je n'ai rien ajouté après l'URL (afin que le code ne fonctionnerait évidemment pas)


0 commentaires