Python 如何使用Flask从服务器删除文件

Python 如何使用Flask从服务器删除文件,python,flask,Python,Flask,使用此功能上载文件时: @app.route('/add_item', methods=['GET', 'POST']) @login_required def new_item(): error = None form = AddItemForm(request.form) if request.method == 'POST': file = request.files['file'] if file and allowed_file(

使用此功能上载文件时:

@app.route('/add_item', methods=['GET', 'POST'])
@login_required
def new_item():
    error = None
    form = AddItemForm(request.form)
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename) and form.name.data != "" and form.description.data != "":
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOADED_ITEMS_DEST'], filename))
            new_item = Item(
                filename,
                form.name.data,
                form.description.data,
                form.price.data,
                form.age.data,
                form.particles.data,
                form.category.data,
                '1',
                )
            db.session.add(new_item)
            db.session.commit()
            return redirect(url_for('admin_items'))
        else:
            return render_template('admin_items.html', form=form, error=error)
    if request.method == 'GET':
        return redirect(url_for('admin_items'))
如何使用删除项目的功能删除此上传文件?问题是,我目前拥有的功能只是删除项目的内容(说明、价格等),但上传到文件夹的实际文件当然不会被删除!这就产生了一个问题

以下是我的删除功能:

# Delete Items:
@app.route('/delete_item/<int:item_id>/', methods=['GET', 'POST'])
@login_required
def delete_item(item_id):
    new_id = item_id
    os.remove(os.path.join(app.config['UPLOADED_ITEMS_DEST'], filename))
    db.session.query(Item).filter_by(item_id=new_id).delete()
    db.session.commit()

    return redirect(url_for('admin_items'))
#删除项目:
@app.route('/delete_item/',methods=['GET','POST'])
@需要登录
def删除项目(项目id):
新建\u id=项目\u id
删除(os.path.join(app.config['UPLOADED\u ITEMS\u DEST'],文件名))
db.session.query(Item).filter_by(Item_id=new_id).delete()
db.session.commit()
返回重定向(url\u for('admin\u items'))

您可以在Python中运行命令

系统('rm THE_FILE_TO_DELETE')

@app.route('/delete_item/',methods=['GET','POST']))
@需要登录
def删除项目(项目id):
新建\u id=项目\u id
item=self.session.query(item.get)(item\u id)
删除(os.path.join(app.config['UPLOADED\u ITEMS\u DEST',item.filename))
self.session.delete(项目)
db.session.commit()
返回重定向(url\u for('admin\u items'))
当然,您应该实现正确的错误捕获。看看:


和os.remove(os.path.join(app.config['upload\u ITEMS\u DEST',filename])不起作用?我插入了删除功能。但由于我不是sqlalchemy的过期用户,我不知道如何从数据库中获取此函数的“filename”值(除非找到它-该函数不太适用于Ank you!这很有帮助。但我已将self-global变量更改为db。因为有一个错误说明self-global变量未定义。
@app.route('/delete_item/<int:item_id>/', methods=['GET', 'POST'])
@login_required
def delete_item(item_id):
    new_id = item_id
    item = self.session.query(Item).get(item_id)
    os.remove(os.path.join(app.config['UPLOADED_ITEMS_DEST'], item.filename))
    self.session.delete(item)
    db.session.commit()
    return redirect(url_for('admin_items'))