将上传的文件保存到磁盘在 Flask 中不起作用[重复]

2024-02-10

我想将任何上传的图像存储到名为“logo.png”的 static/customlogos 文件夹中,无论其实际名称是什么。我有一个基本的 Flask 设置,其中包含典型的静态和模板文件夹。为了简单起见,我在下面的代码中删除了诸如扩展验证之类的内容。但是这样做会引发 FileNotFound 错误。由于我想在各种环境中运行我的应用程序,因此我不想使用静态路径。我究竟做错了什么?感谢您的帮助。

latestfile = request.files['customlogo']
#This prints the file name of the uploaded file
print(latestfile.filename)
#I want to save the uploaded file as logo.png. No matter what the uploaded file name was.
latestfile.save(os.path.join('/static/customlogos', 'logo.png'))

显然,您想将上传的文件另存为static/customlogos/logo.png,相对于 Flask 应用程序目录的路径,但您指定了不存在的绝对路径/static/customlogos.
此外,根据您的评论,您正在 Windows 下开发,这增加了您的问题的不一致。

无论如何,为了实现您想要的目标,您需要知道应用程序的绝对路径,并将其用作起点:

latestfile.save(os.path.join(app.root_path, 'static/customlogos/logo.png'))

跨平台变体:

latestfile.save(os.path.join(app.root_path, 'static', 'customlogos', 'logo.png'))

Ninja 防尘变体:

latestfile.save(os.path.join(app.root_path, app.config['STATIC_FOLDER'], 'customlogos', 'logo.png'))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将上传的文件保存到磁盘在 Flask 中不起作用[重复] 的相关文章

随机推荐