【问题标题】:How can I upload folders with flask?如何使用烧瓶上传文件夹?
【发布时间】:2021-06-09 16:48:58
【问题描述】:

我需要在我的 Flask 应用程序中添加一项功能,让用户上传整个文件夹,而不是其中的文件,但也可以保留整个文件夹树。 Flask 中是否有特殊功能,还是我需要使用单文件上传方法创建带有循环的代码?

提前致谢

【问题讨论】:

  • 欢迎来到 Stack Overflow!您能否编辑您的问题以包含当前应用程序中的一些代码?如果您已经有一个上传表单和一些处理上传的代码,包括它们将帮助其他人为您提供量身定制的解决方案。您是否查看过类似问题的答案?这个可能有帮助stackoverflow.com/questions/22041207/…

标签: flask web-applications directory upload flask-uploads


【解决方案1】:

Chrome 支持上传文件夹,使用 Flask 我们可以获得要保存的文件列表。

上传.html

<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action='' method="POST" enctype="multipart/form-data">
    <p><input type="file" name="file[]" webkitdirectory="" directory="">
    <input type='submit' value='upload'>
    </p>

</form>

ma​​in.py

from flask import Flask, render_template, request, redirect, url_for
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)
UPLOAD_FOLDER = '/path/to/uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 

@app.route('/upload/',methods = ['GET','POST'])
def upload_file():
    if request.method =='POST':
        files = request.files.getlist("file[]")
        print(request.files)
        for file in files:
            path = os.path.dirname(file.filename)
            path2 = os.path.join(app.config['UPLOAD_FOLDER'], path)
            if not os.path.exists(path2):
                os.mkdir(path2)
            filename = os.path.join(path, secure_filename(os.path.basename(file.filename)))
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return 'Files uploaded.'
    return render_template('upload.html')


if __name__ == '__main__':
    app.run(debug = True)

【讨论】:

  • 非常感谢!我试过了,但在浏览上传时我仍然无法选择多个文件或文件夹。你知道为什么吗?
猜你喜欢
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 2020-08-30
  • 2018-04-19
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
相关资源
最近更新 更多