有没有非常详细的与Rails结合的又拍云表单 API 教程啊?

问题一:

今天想设置又拍云,看了:
《李华顺:在 Rails 项目里面使用又拍云用于存储上传图片》
huacnlee / _form.html.erb

《Terry Tai:#009 File uploading by Carrierwave》

《又拍云API文档:表单API接口》

还是有点晕晕的……

是有两种方式么?一种先存到我自己的服务器,再转过去又拍云;另一种是直接上传到又拍云?
那@huacnlee 针对的是第一种情况么?

两种情况下各有什么利弊?
我目前得到的结论是:先我方服务器再又拍服务器稳妥,但耗费资源;用户上传直接传到又拍云服务器速度快省事,但要备份才够安全,而且目前该服务不够稳定……

问题二:

如果用第二种(表单上传),如何操作?
这有篇《ruby 又拍云上传图片(form_api)》

用表单上传的思路是怎样的?以下是我的推测和疑问,对吗?
1. 用户上传图片,post表单
2. 表单的内容分成两部分,一部分去了我方服务器,另一部分(图片)去了又拍云。
3. 我的controller处理完表单,各attr入各model,这时候我图片也会在对应image的model增加数据,比如存储地址和对应的对象id和Type。
这时候,是因为我设置了图片会存入又拍云的哪个位置,文件名设置成怎样(可以设置的吧?),所以我image model可以直接填写存储地址。
但我怎么知道到底存成功没有呢?是要等又拍云这时候又给我服务器一个反馈,我的image相关信息才save吗?这个反馈是怎样获得和处理的?

注:原帖发于:RubyChina

阅读 4.6k
1 个回答
✓ 已被采纳新手上路,请多包涵

使用表单上传API可以节省自己的服务器带宽,且能获得CDN的上传加速效果。

如果使用表单上传API,是需要分成两个部分,其中一个是单独上传文件用。

在使用表单上传API时,可以设定指定的文件路径,具体可参考UPYUN的表单API文档说明。

比如设定的存储路径: /#custom-id#/{random}{.suffix}
该次表单上传设定的 custom-id 为abc,即 /abc/{random}{.suffix}
用户上传 a.jpg

指用户上传的文件会存到 /abc/b8423187c75e6c7f.jpg (注: b8423187c75e6c7f 是UPYUN随机生成)

用户上传完成后,UPYUN会有回调通知。
通知方式有两种,一种是异步回调 notify-url 用来通知你的服务器。另外一种是同步转向的回调 return-url,可使得浏览器跳转到指定的URL

具体可按业务需求来选择 :)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进