And*_*s H 8 ruby-on-rails amazon-s3
我正在开发一个用户加入"流"的项目.在流设置期间,创建流的人(流创建者)可以选择:
在未来我想添加更多存储提供商(如Drive,Onesky等)
关于如何解决这个问题,我有几个不同的问题.
就数据库存储而言,您的应用程序应该根据您向用户和流呈现的界面来规定结构。如果您让用户上传照片,但他们无法选择 URI,并且您的流中没有任何层次结构,那么我建议您在主照片表中仅存储一个 ID 和一个stream_id。
所以至少你可能会有类似的东西
create table photos(id integer primary key, stream_id integer references streams(id) not null);
Run Code Online (Sandbox Code Playgroud)
但您可能还需要独立于存储的描述和其他信息。
流表将具有有关流的所有通用信息,但将具有与依赖于流类型的类的多态关联。因此,您可以使用该关联根据实际使用的流来获取 S3Stream 或 DropBoxStream 的实例。该实例(也是 ActiveRecord 资源)可以存储访问密钥以及诸如保管箱之类的文件夹路径等。此外,该实例可以提供在给定 Photo 对象的情况下构造 URI 的方法。如果特定技术需要缓存签名的 URI,则可以说 S3Stream 对象可以引用对 URI 进行签名的 S3SignedUrl 模型。如果事实证明 DropBox 和 S3 之间的签名 URL 代码相似,那么您可能有一个 SignedUrl 模型。
当您设计 ios 和 android 客户端时,至关重要的是不要授予它们对流所有者的访问令牌的访问权限。相反,您需要在服务器应用程序内完成所有签名。您不希望设备受到损害而导致访问令牌暴露,从而造成计费问题以及隐私暴露。希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |