如何通过python eve将图像上传到一些外部存储服务器,例如S3?

如何通过python eve将图像上传到一些外部存储服务器,例如S3?,python,upload,flask,eve,Python,Upload,Flask,Eve,我知道我们现在可以将媒体类型字段上传/发布到pythoneverest-API框架,它将存储在mongodb中。有没有办法更改这些媒体的存储? 例如远程存储服务器,例如亚马逊S3?所以我们只在mongodb中存储图像的URL而不是整个图像 当存储在GridFS上时,您还可以提供自己的MediaStorage子类,该子类可以存储在任何您想存储的地方(文件系统、S3等) 像这样的东西可以达到目的: from eve.io.media import MediaStorage class Amazon

我知道我们现在可以将媒体类型字段上传/发布到
pythoneverest-API框架
,它将存储在
mongodb
中。有没有办法更改这些媒体的存储? 例如远程存储服务器,例如亚马逊S3?所以我们只在mongodb中存储图像的URL而不是整个图像

当存储在GridFS上时,您还可以提供自己的
MediaStorage
子类,该子类可以存储在任何您想存储的地方(文件系统、S3等)

像这样的东西可以达到目的:

from eve.io.media import MediaStorage

class AmazonS3MediaStorage(MediaStorage):
    """ Your actual implementation """
    pass

app = Eve(media=AmazonS3MediaStorage)

if __name__ == '__main__':
    app.run()

查看实际类以了解实施细节和/或查看实际类以供参考。

@JohnZ如果您提出了S3
MediaStorage
类并有兴趣共享,请与我联系,我们可以将其添加到Eve repo中,或者至少,做一个扩展。我正在尝试实现一个FS媒体存储(只是为了学习),出现了两件事:1-总是在put之后调用get,2-我在创建时收到“resourceWarning:unclosed file”。我应该返回一个流或类似的东西吗?我已经设法使用S3创建了一个MediaStorage。这是我的代码:@gcw nice,你把它重构成一个独立的包怎么样?然后它可以加入官方。当然,让我们这样做。我将检查如何正确包装。