本来 Refile 是我心目中最接近完美的 ruby 文件上传的工具了,不过还是有些细节让人比较不爽。 现在 ActiveStorage 取代了 refile 在我心目中的地位,试用下来,比较满意(除了不能设置默认图片这个不爽以外),顺手为其写了个 qiniu 的 service
https://github.com/qinmingyuan/activestorage_qiniu
欢迎取用。
哈哈,我不是评测党啊。很早前关注过,不过没用过,我觉得也是受 refile 启发的作品,并且作者也是 refile 的主要 contributor。 期间一直用的七牛,写几个简单的 helper 方法,感觉用不上这种框架了。 如果不是 activestorage 出来,和 rails 紧密结合,我也不会用。
https://twin.github.io/better-file-uploads-with-shrine-motivation/
Sprockets
;本来我是写这个 gem 比彩程早的,后来准备上传到 gems 服务器,发现彩程已经先我一步了就改名为 qiniu_rails
了。
彩程毕竟是个公司,可能让人觉得更可信赖一些。我写的这个也依然在公司生产环境使用稳定。
彩程那个之前大概半年没更新,也有一些 bug 直接用跑不通,后来提交 issue 之后就更新了。
代码上我觉得彩程那个功能更专一,assets 我是通过 CDN 回源处理的,不需要扩展 sprokets。
因为他们前端没用 activestorage.js 而是自己实现,所以 dicret_upload 不能直接用,我想仿照你的实现给他们提个 pr。
有个问题,你的实现是更改了原先的 xhr 还是另外发起一个,原先的 xhr 会重复发送吗?
activestorage.source.js:651
PUT http://up-z2.qiniu.com/mkblk/20110227 400 (Bad Request)
POST http://up-z2.qiniu.com/mkfile/20110227/key/XXXXXXXXXXXX 400 (Bad Request)
直传好像有问题,原先的 xhr 会重复发送