Frage

Ich bin mit restclient für eine mehrteilige Formulardaten an einen erholsamen Web-Service senden (es ist Panda Video-Encoding-Service). Der Trick ist jedoch, dass die Datei, die ich vorbei bin in restclient (Technoweenie Zweig) ist aus meiner eigenen Form kommt, dass ein Benutzer sendet.

So lässt Spaziergang durch diese. Ein Benutzer sendet eine Datei auf meine Rails-Anwendung. In meinem Controller, empfängt sie die Datei von params [: Datei]. Ich möchte dann params passieren [: Datei]. Bis auf Panda RestClient mit

Der Fehler Ich erhalte auf dem Panda-Server folgt. Ich habe bemerkt, dass die Datei param in dem Stack-Trace in einem String ist auch (was ich davon ausgehen, ist Panda für ein schöneres Stacktrace in einen String drehen).

 ~ Started request handling: Wed Aug 12 18:05:15 +0000 2009
 ~ Params: {"format"=>"html", "multipart"=>"true", "account_key"=>"SECURE_KEY", "action"=>"upload", "id"=>"SECURE_ID", "controller"=>"videos", "file"=>"#<File:0xcf02ca4>"}
 ~ 9bfb1750-6998-012c-4509-12313900b0f6: (500 returned to client) InternalServerErrorcan't convert nil into String
/var/local/www/panda/app/models/video.rb:246:in `extname'
/var/local/www/panda/app/models/video.rb:246:in `initial_processing'
/var/local/www/panda/app/controllers/videos.rb:79:in `upload'
War es hilfreich?

Lösung

Ich bezweifle, dass Sie wirklich ein CGI-Stil Upload param von Rails in restclient passieren können und erwarten, dass es funktioniert.

Ein regelmäßige Aufnahme in den Rails müßten ganz zusätzliche Attribute, die in einer bereitgestellten Ressourcen gehören nicht (wie die ursprünglichen Dateinamen und so weiter), und ein Rails-Upload enthält einen IO mit den tatsächlichen Dateidaten. Auch ein Datei-Upload-Objekt in Rails könnte ein Tempfile Griff sein und könnte ein StringIO sein -. Je nach Größe des Upload

Was müssen Sie effektiv zu tun ist „rekombinieren“ Upload für restclient es richtig zu handhaben, und übergeben Sie das neu verpackt und zurückgespult Tempfile Objekt restclient. [: Datei] Vielleicht können Sie mit nur Kommissionierung der Upload-Objekt selbst, anstatt die ganze params weg

Andere Tipps

Überprüfen Sie, ob Ihre restclient Aktion speichern können vor Ort zuerst. Wenn die Aktion nicht lokal speichern können, dann werden Sie eine bessere Idee haben, wo sie suchen, während Fehlersuche.

Sieht aus wie das Problem mit Rest-Client Posting der Datei, überprüfen Sie eine alternative Methode aus für wie Kandare veröffentlichen.

Viele Beispiele für auf diese Frage mehrteiligen Formulardaten veröffentlichen: Rubin: wie eine Datei über HTTP schreiben als multipart / form-data

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top