Python 文件夹和文件与Flask一起上载

Python 文件夹和文件与Flask一起上载,python,file-upload,flask,Python,File Upload,Flask,我可以通过以下方式使用flask上传文件: 标记用enctype=multipart/form data标记,并在该表单中放置一个 应用程序从请求对象上的文件字典访问该文件 使用文件的save()方法将文件永久保存在文件系统的某个位置 但我不知道如何上传文件夹或一些文件。我搜索了一下,找到了 然而,我仍然不知道如何上传文件夹和属于该文件夹的文件 你能告诉我怎么做吗 我正在处理的目录树: . ├── manage.py ├── templates │   ├── file_upload.html

我可以通过以下方式使用flask上传文件:

  • 标记用
    enctype=multipart/form data
    标记,并在该表单中放置一个
  • 应用程序从请求对象上的文件字典访问该文件
  • 使用文件的
    save()
    方法将文件永久保存在文件系统的某个位置
  • 但我不知道如何上传文件夹或一些文件。我搜索了一下,找到了

    然而,我仍然不知道如何上传文件夹和属于该文件夹的文件

    你能告诉我怎么做吗


    我正在处理的目录树:

    .
    ├── manage.py
    ├── templates
    │   ├── file_upload.html
    │   └── hello.html
    └── uploads
        ├── BX6dKK7CUAAakzh.jpg
        └── sample.txt
    
    上传文件的源代码:

    from flask import Flask,abort,render_template,request,redirect,url_for
    from werkzeug import secure_filename
    import os
    app = Flask(__name__)
    UPLOAD_FOLDER = './uploads'
    app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 
    @app.route('/')
    def index():
        return redirect(url_for('hello'))
    
    @app.route('/hello/')
    @app.route('/hello/<name>')
    def hello(name = None):
        return render_template('hello.html',name=name)
    
    @app.route('/upload/',methods = ['GET','POST'])
    def upload_file():
        if request.method =='POST':
            file = request.files['file']
            if file:
                filename = secure_filename(file.filename)
                file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
                return hello()
        return render_template('file_upload.html')
    
    
    if __name__ == '__main__':
        app.run(debug = True)
    
    从flask导入flask、中止、呈现模板、请求、重定向、url
    从werkzeug导入安全文件名
    导入操作系统
    app=烧瓶(名称)
    上传文件夹='。/上传'
    app.config['UPLOAD\u FOLDER']=UPLOAD\u FOLDER
    @应用程序路径(“/”)
    def index():
    返回重定向(url_表示('hello'))
    @app.route(“/hello/”)
    @app.route(“/hello/”)
    def hello(name=None):
    返回呈现模板('hello.html',name=name)
    @app.route('/upload/',方法=['GET','POST'])
    def upload_文件():
    如果request.method==“POST”:
    file=request.files['file']
    如果文件:
    filename=secure\u文件名(file.filename)
    保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
    返回hello()
    返回渲染模板('file\u upload.html')
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    app.run(debug=True)
    
    文件上载模板(manage.py):

    
    上载新文件
    上载新文件
    
    


    这里的问题是flask的
    app.config
    不是相对的,而是绝对的。所以当你把:

    flask找不到此目录,返回
    500
    错误。 如果您将其更改为:

    然后上传您的文件并导航到/tmp/目录,您将看到它

    您需要编辑到正确目录的路径,以便正确上载文件

    file = request.files['file']
    
    换成

    file = request.files['file[]']
    

    你读过吗?请记住,HTML表单的显示方式以及用户与表单的交互方式都取决于浏览器,浏览器从HTML中获得提示。Flask通过HTTP提供了一些抽象,但您仍然需要理解HTML才能很好地使用它。谢谢!它确实有用!现在,我明白了:我可以在Chrome上做,但其他人不行。如果你按照你的评论回答,我可以将其标记为回答我的评论实际上不是一个答案,但它似乎给你带来了足够的信息来帮助你自己解决问题,对吗?如果是这样,你应该写下自己的答案并接受。请将答案放在答案栏中。稍后,你可以接受自己的答案。也看到
    UPLOAD_FOLDER = '/tmp'  
    
    file = request.files['file']
    
    file = request.files['file[]']