我将Koala
用于Facebook API,Paperclip
用于Amazon S3。
我已经完成了S3上传的代码,但是上传了Facebook的问题。
这是我的简化代码:
@user = User.find(params[:id])
@graph = Koala::Facebook::API.new(session[:access_token])
file = open(@user.photo.url(:origin)).read
# ALBUM_ID is constant, its value is the Facebook's album ID
@graph.put_picture(file, { }, ALBUM_ID)
我在最后一行收到此错误:
ArgumentError
string contains null byte
我认为我设置file
的方式是错误的,但我无法找到其他方法。
先谢谢。
答案 0 :(得分:1)
使用网址在Facebook上上传图片时,您只需直接发送图片网址(不需要发送二进制数据)。
# REMOVE THIS LINE
file = open(@user.photo.url(:origin)).read
将API调用更新为:
# ALBUM_ID is constant, its value is the Facebook's album ID
@graph.put_picture(@user.photo.url(:origin), {}, ALBUM_ID)
使用put_picture
方法的其他一些方法:
# put_picture(file, content_type, {:message => "Message"}, 01234560)
# put_picture(params[:file], {:message => "Message"})
# # with URLs, there's no optional content type field
# put_picture(picture_url, {:message => "Message"}, my_page_id)
来源:Koala gem。