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

Joh*_*ohn 6 python upload flask eve

我知道我们现在可以上传/发布媒体类型字段,python-eve REST-API framework并将其存储在mongodb.有没有办法可以改变那些媒体的存储空间?例如远程存储服务器,例如amazon S3?那么我们只在mongodb而不是整个图像中存储图像的URL?

Nic*_*cci 2

虽然标准行为是存储在 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()
Run Code Online (Sandbox Code Playgroud)

查看实际的MediaStorage类以获取实现细节和/或查看实际的GridFSMediaStorage类以供参考。

  • 我已经成功使用 S3 制作了 MediaStorage。这是我的代码:https://github.com/gwainer/eve/commit/eaf1c0adc2ef6c7d66e429bc70104f5808b841d8 (2认同)