Python烧瓶上传文件但不保存和使用

时间:2015-02-10 17:34:44

标签: python flask

我的代码当前接收一个文件,并将其保存到预设目录,但是可以只使用该文件(读取文件)而不保存它吗?

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return "yatta"
        else:
            return "file not allowed"

    return render_template("index.html")

我试过了两次

file.read()和file.stream.read()但是返回值为空。我验证该文件是否存在于上载的目录中,并看到该文件不为空。

2 个答案:

答案 0 :(得分:6)

我知道这已经过时但是为了让人们登陆这里进行类似的调查,这里是你想要保存 AND 读取你的文件。看起来像Werkzeug的FileStorage类(它是在Flask中处理上传文件的类)指向到每个动作(保存或读取)后的文件结尾。因此,在执行任何后续操作之前,我们必须将指针移动到文件的开头。我在下面的回答中使用了python的pandas,因为我经常将csv读入数据帧。

function foo() {
  this.items = []
  this.addItem = function() { ... }
}

答案 1 :(得分:0)

在致电file.save()之前,请确保您未使用file.read()保存文件。

所以,你的功能是:

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            contents = file.read()
            # do something with file contents
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return "yatta"
        else:
            return "file not allowed"

    return render_template("index.html")

希望这有帮助!