Was*_*per 35 ruby-on-rails carrierwave ruby-on-rails-3.2
我只是想知道如何在Rails控制台中使用Carrierwave上传远程文件URL.
我试了以下没有任何运气.我认为它不处理上传器?
user = User.first
user.remote_avatar_url = "http://www.image.com/file.jpg"
user.save
Run Code Online (Sandbox Code Playgroud)
非常感谢
Koo*_*per 20
请查看此页面上的" 从远程位置上传文件 "部分https://github.com/carrierwaveuploader/carrierwave
如果位置的url无效,CarrierWave应该抛出错误
2.1.3 :015 > image.remote_image_url = "http"
=> "http"
2.1.3 :016 > image.save!
(0.2ms) BEGIN
(0.2ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Image trying to download a file which is not served over HTTP
Run Code Online (Sandbox Code Playgroud)
或者,如果它是一个未知的主机:
2.1.3 :017 > image.remote_image_url = "http://foobar"
=> "http://foobar"
2.1.3 :018 > image.save!
(0.4ms) BEGIN
(0.4ms) ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Image could not download file: getaddrinfo: nodename nor servname provided, or not known
Run Code Online (Sandbox Code Playgroud)
另请注意,如果要下载远程图像,则应在属性前加上remote_后缀_url,如示例所示
user = User.first
user.remote_avatar = File.open(FILE_LOCATION)
user.save
Run Code Online (Sandbox Code Playgroud)
FILE_LOCATION可以
File.join(Rails.root, '/files/png-sample.png')
Run Code Online (Sandbox Code Playgroud)
如果在rails项目的文件夹'files'中找到文件
我面临着同样的问题。可能是http正在重定向到https。因此,我使用gsub替换了它们,如下所示:
image.remote_image_url = remote_image_url.gsub('http://','https://')
image.save!
Run Code Online (Sandbox Code Playgroud)
这最有可能解决问题。
| 归档时间: |
|
| 查看次数: |
24530 次 |
| 最近记录: |