huobazi/carrierwave-qiniu

希望能增加获取有时效性url链接地址的方法

wuguanghai45 opened this issue · 7 comments

算法是从qiniu ruby-sdk上参考的。。因为项目需要文件url过时。。找了半天。。
require "hmac-sha1"

def authorize_url(url = self.url, auth_time = 1.hour)
auth_url = "#{url}?e=#{(Time.now + auth_time).to_i}"
sign = HMAC::SHA1.new(self.qiniu_secret_key).update(auth_url).digest
token = Base64.encode64(sign).strip.gsub('+', '-').gsub('/','_').gsub(/\r?\n/, '')
"#{auth_url}&token=#{self.qiniu_access_key}:#{token}"
end

@wuguanghai45
你可以先使用 这个branch:
https://github.com/huobazi/carrierwave-qiniu/tree/private_url_expires_in

增加了一个 qiniu_private_url_expires_in 的配置 默认是 3600 秒

也非常期望你能够有使用上的反馈,谢谢。

我使用了提供的branch,同时把quint也更新到了 6.4.1版本, Gemfile如下:

gem 'qiniu', "~> 6.4.1"
gem 'carrierwave-qiniu', git: 'https://github.com/huobazi/carrierwave-qiniu.git', 
                         branch: 'private_url_expires_in'

同时添加了qiniu_private_url_expires_in配置:

config.qiniu_private_url_expires_in = 315_360_000

然后就不能工作了,就是在报这个错:

NoMethodError - undefined method `[]=' for nil:NilClass:
  qiniu (6.4.1) lib/qiniu/upload.rb:54:in `upload_with_token_2'
  qiniu (6.4.1) lib/qiniu/upload.rb:102:in `upload_with_put_policy'
  /Users/jianpingzhou/.bundler/ruby/2.0.0/carrierwave-qiniu-0992f9b0cf42/lib/carrierwave/storage/qiniu.rb:38:in `store'
  /Users/jianpingzhou/.bundler/ruby/2.0.0/carrierwave-qiniu-0992f9b0cf42/lib/carrierwave/storage/qiniu.rb:102:in `store'
  /Users/jianpingzhou/.bundler/ruby/2.0.0/carrierwave-qiniu-0992f9b0cf42/lib/carrierwave/storage/qiniu.rb:163:in `store!'
  carrierwave (0.10.0) lib/carrierwave/uploader/store.rb:59:in `block in store!'
  carrierwave (0.10.0) lib/carrierwave/uploader/callbacks.rb:17:in `with_callbacks'
  carrierwave (0.10.0) lib/carrierwave/uploader/store.rb:58:in `store!'
  carrierwave (0.10.0) lib/carrierwave/mount.rb:375:in `store!'
  carrierwave (0.10.0) lib/carrierwave/mount.rb:207:in `store_data!'

因为qiniu对private图片有默认的过期时间,可是我不希望图片过期,最少在2037年之前不会过期。
所以修改了设置。

Any idea? Thanks.

。。。不过期就直接用原来的就行了把,
config.qiniu_bucket_private= false

@CocaColaCat
已经在 private_url_expires_in 分支 修正
ref #22
ref 28c031b
ref 41f765a

拉了新代码,OK了。周末还要修bug,辛苦了。:smile:

之前的分支 ref (28c031b) 有 bug,我 fork 并做了修改。已经发了pull request.

@CocaColaCat 已 merge 感谢您的贡献!