2016-09-30 20 views
0

Twitter gemとTwitter REST APIの両方を使用して簡単な画像をTwitterにアップロードしようとしています。私はいつも次のエラーが発生するTwitter::Error::BadRequest: Segments do not add up to provided total file size.Ruby - Twitter Gem - INIT、APPEND、FINALIZEコマンドを使用して画像をアップロードする

私が正しいと思うと、私はプロセスの終わりに(FINALIZE)、アップロードされたイメージのサイズ(APPENDの間)は最初に宣言したものと同じではないことを理解しています場所(INIT中)。ここで

は私のコードです:

file_path = "/Users/folder/image.png" 
filesize = File.open(file_path).size 
init_request = Twitter::REST::Request.new(TWITTER, :post, "https://upload.twitter.com/1.1/media/upload.json?command=INIT&total_bytes=#{filesize}&media_type=image/png").perform 
media_id = init_request[:media_id] 

Twitter::REST::Request.new(TWITTER, :post, "https://upload.twitter.com/1.1/media/upload.json?command=APPEND&media_id=#{media_id}&media=#{file_path}.png&segment_index=0").perform 

Twitter::REST::Request.new(TWITTER, :post, "https://upload.twitter.com/1.1/media/upload.json?command=FINALIZE&media_id=#{media_id}").perform 

任意のヒント?ありがとう!

+0

誰が私の手を与えるために: だから、あなたはTwitterの::このようなREST ::要求を使用する必要がありますか? :) – Eric

答えて

1

宝石のレポのexamplesを見てください。

あなたがポストにアップロードしたい場合は、のように簡単になりますあなただけmedia_idこのの参照をアップロードして取得したい場合は、これは動作するはず

client.update_with_media("I'm tweeting with @gem!", File.new("/Users/folder/image.png"))` 

client.upload(File.new("/Users/folder/image.png")) 
+0

ありがとう!しかし、update_with_mediaは廃止されました。そのため、私はこのようにしています。 – Eric

+0

ああ..すみません。私はこの宝石を使ったことがありません。 2番目の方法を試してみましたか?そして、 'client.update(" Tweet text "、:media_ids => #the_id_from_the_last_call)'? –

+0

@エリックそれは働いている? –

0

このリクエストは間違っている:

Twitter::REST::Request.new(TWITTER, :post, "https://upload.twitter.com/1.1/media/upload.json?command=APPEND&media_id=#{media_id}&media=#{file_path}.png&segment_index=0").perform 

あなたはマルチパートデータなどのメディアファイルをアップロードdid'tので、あなただけのファイルパスを送りますテキストとして。

Twitter::REST::Request.new(TWITTER, 
          :post, "https://upload.twitter.com/1.1/media/upload.json", 
          command: 'APPEND', 
          media_id: media_id, 
          media: File.open(file_path), 
          segment_index: 0).perform 
関連する問題