Python Flask上传文件到服务器上的app文件夹(heroku)

时间:2017-06-23 09:53:38

标签: python heroku

我需要将图像文件上传到某个文件夹。它在localhost上工作正常,但如果我将应用程序推送到heroku,它会告诉我:

IOError: [Errno 2] No such file or directory: 'static/userimg/1-bild-1.jpg'

这意味着它无法找到该文件夹​​?

我需要在那里存储图像文件几秒钟才能对主题执行一些操作。之后,他们将被发送到AWS,并将从文件夹中删除。

这是我将图像保存到文件夹中的代码:

i = 1
for key, file in request.files.iteritems():
    if file:
        filename = secure_filename(str(current_user.id) + "-bild-"+ str(i) +".jpg")
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) 
        i = i + 1 

稍后我从文件夹中获取文件:

for item in os.listdir(os.path.join(app.config['UPLOAD_FOLDER'])):
    if item.startswith(str(current_user.id)) and item.split(".")[0].endswith("1"):
        with open(os.path.join(app.config['UPLOAD_FOLDER'], item), "rb") as thefile:
            data = base64.b64encode(thefile.read())
            upload_image_to_aws_from_image_v3('MYBUCKET', "userimg/", data, new_zimmer, "hauptbild", new_zimmer.stadt, new_zimmer.id)
        os.remove(str(thefile.name))

这是app config中的上传文件夹:

UPLOAD_FOLDER = "static/userimg/"

在localhost上一切正常。

1 个答案:

答案 0 :(得分:0)

我必须添加目录的绝对路径,因为服务器上的路径不同。

您可以通过CLI为您的应用运行heroku run bash,并使用dir检查目录。然后使用cd ..返回或cd *directory name*进入目录。

我必须添加

MYDIR = os.path.dirname(__file__)

并替换所有

os.path.join(app.config['UPLOAD_FOLDER']

os.path.join(MYDIR + "/" + app.config['UPLOAD_FOLDER']

关于该主题的一些信息也在这里: Similar question