2016-03-22 11 views
1

Ich versuche, einen Datei-Upload auf Google Drive-API mit Rest Anrufe durchzuführen. Die API sagt, dass, wenn Sie die Datei benennen möchten, Metadaten müssen übergeben werden und es sollte als Multipart hochgeladen werden.Ruby: Rest-Client mehrteilige Upload auf Google-Laufwerk mit Metadaten

Ich erhalte einen '400 Bad Request' Fehler. Ich denke, dies könnte daran liegen, dass mehrere Inhaltstypen den Rest-Client verwenden.

RestClient::Request.execute(
           :method => "post", 
           :url => "https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart", 
           :headers => {:Authorization => "Bearer #{access_token}", :content_type => 'multipart/related'}, 
           :payload => {:metadata => "{'title' : 'testing'}", :file => File.new(file, 'rb'), :multipart => true} 
          ) 

Jede mögliche Hilfe würde groß sein! Vielen Dank!

+0

haben Sie es geschafft, diese zu lösen? Ich bekomme genau den gleichen Fehler. – dsignr

+1

Leider konnte ich keinen Weg finden, dies zu lösen. – SKelly94

Antwort

0

Ich glaube, mit der angegebenen Bibliothek (Rest-Client) ist dies nicht möglich, da die Anforderung, nach Googles Anforderungen, die Multi-Teile bestellt werden müssen und die richtige Mime-Typ für jeden der Multipart haben .

Also, würde ich sagen, die Syntax, die Sie verwendet haben, ist am nächsten, um korrekt zu sein, aber leider scheint der Edelstein dies [1] zum Zeitpunkt dieses Kommentars nicht zu unterstützen.

Wenn Sie immer noch nach einer Lösung suchen, ist das nächste, was ich gefunden habe, direkt in Google API-Client-Bibliothek zu graben, wo sie eine mehrteilige Anfrage mit Hilfe von Hurley Hand-Handwerk [2].

Sie können den Quellcode für einige Ideen überprüfen. [3]

Hoffe, das hilft.

[1] https://github.com/rest-client/rest-client/pull/222

[2] https://github.com/lostisland/hurley

[3] https://github.com/google/google-api-ruby-client/blob/d2e51b4e7d4cb5a18cb08b2aed9c0d8ffff14b22/lib/google/apis/core/multipart.rb