1

当我尝试通过图形 URL(https://graph.facebook.com)获取 facebook 图像时,回形针将 avatar_image_name 存储为数据库中的“图片”。代码示例:

img =  UserImages.new
img.avatar = URI.parse('https://graph.facebook.com/666980153384194/picture?type=large')
img.save

控制台日志中的 MySQL 查询:

=> #<URI::HTTPS:0x00000009954490 URL:https://graph.facebook.com/666980153384194/picture?type=large>
irb(main):009:0> img.save
   (0.0ms)  BEGIN
  SQL (0.0ms)  INSERT INTO `user_images` (`avatar_content_type`, `avatar_file_name`, `avatar_file_size`, `avatar_updated
_at`, `created_at`, `updated_at`) VALUES ('image/jpeg', 'picture', 6157, '2014-07-08 13:55:53', '2014-07-08 13:56:02', '
2014-07-08 13:56:02')
   (29.1ms)  COMMIT

如您所见,提取的图像文件以名称“图片”存储。但如果通过直接 URL 获取图像,例如:

https://scontent-a-lax.xx.fbcdn.net/hphotos-prn2/v/t1.0-9/10478546_662150043867205_2640371404472615909_n.jpg?oh=cb2fe9d421fef3d7d2220bb48a2a36e2&oe=5418E8FB 

获取的图像存储为:

   (0.0ms)  BEGIN
Command :: file -b --mime "C:/Users/Windows/AppData/Local/Temp/f1620d075c0642a77f7b98e532d8a8eb20140708-1040-1h5z4e6.jpg
"
  SQL (1.0ms)  INSERT INTO `user_images` (`avatar_content_type`, `avatar_file_name`, `avatar_file_size`, `avatar_updated
_at`, `created_at`, `updated_at`) VALUES ('image/jpeg', '10478546_662150043867205_2640371404472615909_n.jpg', 25862, '20
14-07-08 14:02:45', '2014-07-08 14:02:49', '2014-07-08 14:02:49')
   (34.1ms)  COMMIT
=> true

任何建议(解决方案)将不胜感激。

UserImages 类的来源:

  class UserImages < ActiveRecord::Base
    belongs_to :imageable ,polymorphic: true
    has_attached_file :avatar,
                      :styles => { :medium => "300x300>", :thumb => "125x125>" },
                      :path => ":rails_root/public/images/users/:id/:style/:hash.:extension",
                      :default_url => "/images/normal/missing.jpg",
                      :url => "/images/users/:id/:style/:hash.:extension",
                      :hash_secret => "EWRWerrew234UTY"

    validates_attachment :avatar, :content_type =>  { :content_type => ["image/jpeg", "image/gif", "image/png"] },
                                      :size => { :in => 0..5.megabytes }

  end
4

1 回答 1

0

两个获取 URL 都没有问题......两者都工作正常......不同之处只是因为回形针从 URL 的最后部分生成文件名......所以在第一个 URL

https://graph.facebook.com/666980153384194/图片?type=large

在第二个 URL

https://scontent-a-lax.xx.fbcdn.net/hphotos-prn2/v/t1.0-9/ 10478546_662150043867205_2640371404472615909_n.jpg ?oh=cb2fe9d421fef3d7d2220bb48a2a36e2&oe=5418EFB8

我已经将回形针用于生成文件名的 URL 部分加粗了……在这两种情况下,你都不应该为文件名而烦恼……因为你可以做任何你想做的操作,比如回形针。

public/images/users/:id您可以通过检查路径(回形针路径配置)来确保文件已上传

于 2014-07-08T14:17:27.853 回答