【问题标题】:Flask - Get the name of an uploaded file minus the file extensionFlask - 获取上传文件的名称减去文件扩展名
【发布时间】:2019-04-05 12:05:16
【问题描述】:

我有一个表单,可以在多个字段中上传多个文件

例如: 我有一个名为 PR1 的字段,另一个 Pr2 和 PR3, 在每个字段中,我可以上传(或不上传)多个文件,上传端工作正常:

files = request.files
for prodotti in files:
        print(prodotti)
        for f in request.files.getlist(prodotti):
            if prodotti == 'file_ordine':
                os.makedirs(os.path.join(app.instance_path, 'file_ordini'), exist_ok=True)
                f.save(os.path.join(app.instance_path, 'file_ordini', secure_filename(f.filename)))
                print(f)

所以使用这种方法的结果例如是:

Pr1
<FileStorage: 'FAIL #2.mp3' ('audio/mp3')>

此时我想用 file 的名称 + 文件扩展名更新我的数据库中 pr1 行中的字段 file,我怎样才能得到文件的名称?

【问题讨论】:

    标签: python python-3.x flask werkzeug


    【解决方案1】:

    它返回一个FileStorage 对象,f 是一个FileStorage 对象,您可以从中访问文件名FileStorage.filename

    >>> from werkzeug.datastructures import FileStorage
    >>> f = FileStorage(filename='Untitled.png')
    >>> type(f)
    <class 'werkzeug.datastructures.FileStorage'>
    >>> f.filename
    'Untitled.png'
    >>> f.filename.split('.')
    ['Untitled', 'png']
    >>> f.filename.split('.')[0]
    'Untitled'
    >>> 
    

    app.py

    import os
    from flask import Flask, render_template, request
    from werkzeug.utils import secure_filename
    
    app = Flask(__name__)
    
    app.config['SECRET_KEY'] = '^%huYtFd90;90jjj'
    app.config['UPLOADED_PHOTOS'] = 'static'
    
    
    @app.route('/upload', methods=['GET', 'POST'])
    def upload():
        if request.method == 'POST' and 'photo' in request.files:
            file = request.files['photo']
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOADED_PHOTOS'], filename))
            print(file.filename, type(file), file.filename.split('.')[0])
        return render_template('page.html')
    
    
    if __name__ == "__main__":
        app.run(debug=True)
    

    打印出来:

    untitled.png <class 'werkzeug.datastructures.FileStorage'> untitled
    127.0.0.1 - - [01/Nov/2018 18:20:34] "POST /upload HTTP/1.1" 200 -
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多