qiniu / ruby-sdk

Qiniu Resource (Cloud) Storage SDK for Ruby
MIT License
164 stars 138 forks source link

关于 async_options 的建议 #48

Closed huobazi closed 11 years ago

huobazi commented 11 years ago

场景如下: 我有一个bucket名为spec-test 定义两个style的数据处理,分别设定如下:

别名:large 
处理:imageMogr/v2/thumbnail/720>/quality/75

别名:small
处理:imageMogr/v2/thumbnail/320>/quality/40

我希望对在上传图片后就进行异步预处理调用这两处设定 经过查阅api和sdk文档可知,需要在generate_upload_tokenasync_options内传入 imageMogr/v2/thumbnail/320>/quality/40 这样定设定

其不变之处在于,当未来定某天,我需要将版本small修改为宽度321时需要使用 qboxrsctl 工具重新设定该该style为imageMogr/v2/thumbnail/321>/quality/40,同时还需要修改generate_upload_token内的async_options设定,这样需要多处维护,比较麻烦。

理想的方式是:在generate_upload_tokenasync_options内也可以传入style的name比如 :async_options => 'small;large;other' 你们api内部应该可以根据这些style的name找到对应的 imageMogr/v2/thumbnail/320>/quality/40 这样的设定,继续做后续工作。

ikbear commented 11 years ago

我们目前是支持的,你可以这样使用:

asyncOps = "$(x:imageop1);http://$(bucket).qiniudn.com.com/$(key)?$(x:imageop2}"

其中 $(x:imageop1) 和 $(x:imageop2) 都是在上传表单中定义的参数。

也可以这样使用:

asyncOps = "http://$(bucket).qiniudn.com.com/$(key)-opName"

其中,opName 为定义的别名,如你这里的 large 或者 small,而 opName 之前的横杠是你自定义的分隔符。

huobazi commented 11 years ago

@ikbear 感谢您的回复。

我按照你指出的方法正在测试,不过我有如下的困惑:

请问在使用异步处理时,有什么办法能够测试到某别名的图片是真实已经在七牛生成了?在portal的内容管理内是看不到的。

如果通过路径访问某图片比如 http://my-bucket.qiniudn.com/file-key.jpg-small 我无法确定该small图片是上传后异步生成的,还是我当前访问时生成的。

谢谢。

xushiwei commented 11 years ago

由于图片本身的转换过程并不耗时,所以感觉上并无使用 asyncOps 的必要