Gem 给 activestorage 顺手撸了个七牛的 service

mingyuan0715 · October 27, 2017 · Last by aoner replied at April 28, 2024 · 3240 hits

本来 Refile 是我心目中最接近完美的 ruby 文件上传的工具了,不过还是有些细节让人比较不爽。 现在 ActiveStorage 取代了 refile 在我心目中的地位,试用下来,比较满意(除了不能设置默认图片这个不爽以外),顺手为其写了个 qiniu 的 service

https://github.com/qinmingyuan/activestorage_qiniu

欢迎取用。

shrine 这个文件上传怎么看?

Reply to awking

哈哈,我不是评测党啊。很早前关注过,不过没用过,我觉得也是受 refile 启发的作品,并且作者也是 refile 的主要 contributor。 期间一直用的七牛,写几个简单的 helper 方法,感觉用不上这种框架了。 如果不是 activestorage 出来,和 rails 紧密结合,我也不会用。

https://twin.github.io/better-file-uploads-with-shrine-motivation/

as 能直传吗?不经过 app server

Reply to pynix

可以呀,我还没研究七牛 service 的直传怎么实现。不过七牛的 js sdk 直传也很方便。

Reply to pynix

直传用 js sdk 吧

Reply to jun1st

需要服务端配合的吧

Reply to awking

shrine + tus + minio

Reply to pynix

应该可以通过表单 js sdk 直接用表单提交的

Reply to jun1st

好吧

这个 gem 相比 https://github.com/mycolorway/activestorage_qiniu/ 的优势是什么?

Reply to Rei
  1. bug 比它少,不过我写的可能也挺多 bug,毕竟测试代码几乎没有,但是确切的修复了几个彩程这个 gem 现存的 bug。
  2. 支持 QiniuHelper 独立的简单使用;
  3. 支持同步静态资源文件到七牛,扩展了Sprockets
  4. 支持 直传(direct_upload)到七牛服务器,彩程设计的 就不支持;

本来我是写这个 gem 比彩程早的,后来准备上传到 gems 服务器,发现彩程已经先我一步了就改名为 qiniu_rails 了。

彩程毕竟是个公司,可能让人觉得更可信赖一些。我写的这个也依然在公司生产环境使用稳定。

彩程那个之前大概半年没更新,也有一些 bug 直接用跑不通,后来提交 issue 之后就更新了。

代码上我觉得彩程那个功能更专一,assets 我是通过 CDN 回源处理的,不需要扩展 sprokets。

因为他们前端没用 activestorage.js 而是自己实现,所以 dicret_upload 不能直接用,我想仿照你的实现给他们提个 pr。

有个问题,你的实现是更改了原先的 xhr 还是另外发起一个,原先的 xhr 会重复发送吗?

Reply to Rei

我调试的时候明确看了请求是不会重复提交之前的 xhr 的。

14 Floor has deleted
15 Floor has deleted
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 会重复发送

You need to Sign in before reply, if you don't have an account, please Sign up first.