python - Flask - 获取上传文件的名称减去文件扩展名

标签 python python-3.x flask werkzeug

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

例如: 我有一个名为 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 +文件扩展名,我怎样才能得到文件的名称?

最佳答案

它返回一个 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'
>>> 

应用.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 -

关于python - Flask - 获取上传文件的名称减去文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53098335/

相关文章:

python - 为什么dictproxy会改变它的id?

python - 为什么这种使用函数参数的方式不起作用?

python - 在 Flask 中使用 session 时出现 KeyError

python - 需要从 Python Flask-Appbuilder 连接到 SQL Server 的帮助

python - Tweepy 流媒体过滤器字段

python - socket.gaierror : [Errno 11001] getaddrinfo. Flask 应用程序一周前正在运行,现在我看到了这个错误。不知道发生了什么

python - 清除/覆盖 Python 中的标准输出

python - 为列表生成器结果分配不同的值

python - 读入多个变量 Python

python-3.x - python pandas条件累积总和