作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我上传新文件时,它会保存到应用程序根文件夹,即使我指定了不同的 UPLOAD_FOLDER
。为什么配置不起作用?
views.py
:
from flask import render_template
from flask import request, redirect, url_for,flash
from werkzeug.utils import secure_filename
from app import app
import os
APP_ROOT = os.path.dirname(os.path.abspath(__file__))
UPLOAD_FOLD = '/Users/blabla/Desktop/kenetelli/htmlfi'
UPLOAD_FOLDER = os.path.join(APP_ROOT, UPLOAD_FOLD)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def tmrf():
return render_template('main.html')
@app.route('/uploader', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['file']
f.save(secure_filename(f.filename))
return 'file uploaded successfully'
__init__.py
:
from flask import Flask
UPLOAD_FOLDER = ''
ALLOWED_EXTENSIONS = set('*.doc')
app = Flask(__name__)
app.config.from_object('config')
from app import views
最佳答案
UPLOAD_FOLDER
不是 Flask 可识别的配置选项。 f.save
相对于当前工作目录工作,通常是开发期间的项目根目录。
将安全文件名加入上传文件夹,然后保存到该路径。
f.save(os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(f.filename)))
最好将本地数据存储在instance folder中,而不是项目根目录。 Flask 已经知道它在哪里。只需确保先创建 instance
目录即可。
import os
from werkzeug.utils import secure_filename
# create the folders when setting up your app
os.makedirs(os.path.join(app.instance_path, 'htmlfi'), exist_ok=True)
# when saving the file
f.save(os.path.join(app.instance_path, 'htmlfi', secure_filename(f.filename)))
无论您决定将其保存在何处,都需要确保运行该应用程序的用户对该目录具有写权限。例如,如果您在使用 mod_wsgi 运行时遇到权限错误,用户通常是 httpd
或 www-data
。如果您收到权限被拒绝的错误,请检查。
关于python - 在 Flask 中保存上传只保存到项目根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42424853/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!