Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-使用URL将图片上传到Facebook_Ruby On Rails_Facebook_Amazon S3 - Fatal编程技术网

Ruby on rails Rails-使用URL将图片上传到Facebook

Ruby on rails Rails-使用URL将图片上传到Facebook,ruby-on-rails,facebook,amazon-s3,Ruby On Rails,Facebook,Amazon S3,我在Facebook API中使用Koala,在AmazonS3中使用回形针 我已经完成了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

我在Facebook API中使用
Koala
,在AmazonS3中使用
回形针

我已经完成了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
我认为我设置
文件的方法是错误的,但我找不到其他方法


感谢您。

使用URL在facebook上传图片时,您只需直接发送图片URL(您不需要发送二进制数据)

将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)

来源:gem。

谢谢你的回复。我不断从Facebook上收到
未知错误500
,这很可能是由于回形针的URL扩展名为
../my image.jpg?140583423
。我试着在没有那个扩展名的情况下对URL进行编码,结果成功了。有没有办法禁用该扩展?如果我理解您的评论,
@user.photo.url(:origin).split(“?”)[0]
可以为您工作
  #     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)