qiniu / ruby-sdk

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

有没有从其他存储空间拉文件到七牛的功能? #82

Closed apprentice1988 closed 10 years ago

apprentice1988 commented 10 years ago

比如我在其他的地方有文件, 比如外链地址是http://thebeast.qiniudn.com/logo.jpg, 有没有一个api可以直接将该文件拉到七牛中来. 不是镜像, 是整个文件upload到七牛?

ikbear commented 10 years ago

镜像存储也不支持七牛的源站。

你这个需求可以使用这个现成的 API 来做:http://developer.qiniu.com/docs/v6/api/reference/rs/fetch.html

apprentice1988 commented 10 years ago
remote_url = "http://n4ke-kne.mp4"  #比如是一个视频文件地址
enc_remote_url = Qiniu::Utils.urlsafe_base64_encode(remote_url)  
encode_entry_uri = Qiniu::Utils.encode_entry_uri('thebeast',"#{Time.now}.mp4")
path = "/fetch/#{enc_dl_url}/to/#{encode_entry_uri}HTTP/1.1"
signing_str = path+"\n"
encoded_sign = HMAC::SHA1.digest(signing_str,Qiniu::Config.settings[:secret_key])
post path, nil, {"Content-Type": "application/x-www-form-urlencoded",:Host=>"iovip.qbox.me",:Athorization=>"QBox #{Qiniu::Config.settings[:access_key]}:#{encoded_sign}"}

对七牛上传这一块还不是很熟悉, 这是我写的ruby代码,还希望能有人帮忙看一下, 指点一下ruby如何使用七牛的fetch api. 谢谢了

longbai commented 10 years ago

@apprentice1988 HTTP 1.1 是http 通信的原始内容,不需要关心,上面代码改写如下

remote_url = "http://n4ke-kne.mp4"  #比如是一个视频文件地址
enc_remote_url = Qiniu::Utils.urlsafe_base64_encode(remote_url)  
encode_entry_uri = Qiniu::Utils.encode_entry_uri('thebeast',"#{Time.now}.mp4")
path = "/fetch/#{enc_remote_url}/to/#{encode_entry_uri}"
signing_str = path+"\n"
encoded_sign = HMAC::SHA1.digest(signing_str,Qiniu::Config.settings[:secret_key])
post path, nil, {"Content-Type": "application/x-www-form-urlencoded",:Host=>"iovip.qbox.me",:Athorization=>"QBox #{Qiniu::Config.settings[:access_key]}:#{encoded_sign}"}
aizhang commented 10 years ago

总是返回401 Unauthorized,y?

longbai commented 10 years ago

需要token @aizhang

huobazi commented 10 years ago

@ikbear 请问如果绑定了自定义域名,还会当做源站么?

longbai commented 10 years ago

@huobazi 这类问题 请到工单系统提问,或者segmentfault,会更快响应。您这个问题能否描述更详细些,我没有理解您想要描述的具体情况及想要做什么。