当前位置: 首页 > 面试题库 >

在Flask中保存上传仅保存到项目根目录

蒙洛华
2023-03-14
问题内容

当我上传新文件时,即使我指定了别的,它也会保存到应用程序的根文件夹中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)))

最好将本地数据存储在实例文件夹中,而不是项目根目录中。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运行时遇到权限错误,则该用户通常是httpdwww-data。如果出现权限被拒绝错误,请检查。



 类似资料:
  • 更改IPython工作目录插入图像到IPython笔记本标记 您好,我已经阅读了上面的两个链接,第二个链接似乎最相关。这个人所描述的——仅仅调用子目录——对我来说不起作用。例如,我有一个图像“gephi”。png'in'/Graphs/gephi。但是当我写下面的 没有图像弹出-是的。没有错误。除了一个空的方块图像,什么也没有弹出。 澄清:当我将图像移动到常规导演处时,图像会很好地弹出。我唯一的代

  • 问题内容: 我有一个Scrapy项目,正在尝试将输出项保存为Django模型定义中的对象(我不使用DjangoItem)。 我正在按此处指定的方式导入Django设置。 在我的Scrapy项目中,我有一个管道类,该类最终处理所有项目并将其保存到数据库中: 但是,发生了一些奇怪的事情,对于第一个项目,我得到了一个错误(请参阅下文)。对于其余项目,一切都很好。假设我要保存7个项目,因此我在第一个保存错

  • 问题内容: 我正在尝试创建文件并将其保存到站点的根目录,但是我不知道它在哪里创建文件,因为看不到任何文件。而且,如果可能的话,我需要每次都覆盖该文件。 这是我的代码: 如何设置保存在根目录下? 问题答案: 它在与脚本相同的目录中创建文件。试试这个吧。

  • 问题内容: 下面是我用来将文件上传到目录中的代码。工作正常。我的主要问题是: move_uploaded_file() 是将上载的文件保存到目录中的文件,我也猜过 move_uploaded_file() 是为其设置名称的文件。 如何将文件名更改为随机数? 我尝试在下面这样做: 我试过更改 $ _FILES [“ file”] [“ name”]之类的 变量,并用 $ fileName 替换它 ;

  • 问题内容: 我有此功能可以将图像保存在tmp文件夹中 但是,当我打开应用程序的temp文件夹时,它是空的。将图像保存在temp文件夹中,我做错了什么? 问题答案: 不是获取的文件路径的正确方法,请改用: 或者 更好的是, 仅使用URL: 更好的是,使用 并检查成功或失败: Swift 3/4更新:

  • 问题 上传文件,并将其保存到预先设定的某个目录下。 方法 import web urls = ('/upload', 'Upload') class Upload: def GET(self): web.header("Content-Type","text/html; charset=utf-8") return """<html><head></he