Rest-client posting multipart to rails 2


#1

Hi all,

I’m using rest-client (in a Shoooes app) to post a multi-part form to
my rails server. I’ve been struck down by a gotcha (which may not be a
gotcha for non-newbies).

What I want to do is post an image file within the form. Examples show
that the correct syntax is such:

          params = {'myObject[name]' => "some name",
                              'myObject[details]' => "some extra

details and stuff here.",
:myObject[image] =>
File.new(’/baa/baa/screen-capture-1.png’)
}
response = RestClient.post
http://me:removed_email_address@domain.invalid/myObject.xml”, params

but :myObject[image] is not a valid symbol … and that’s how rails
creates the names of the fields in the forms …

Any ideas?

Etienne


#2

Hi,

On 28.11.2008, at 09:14 , e deleflie wrote:

                             'myObject[details]' => "some extra

Any ideas?

Etienne

Your two first parameters have strings as keys, not symbols.

einarmagnus


#3

On Fri, Nov 28, 2008 at 8:26 PM, Einar Magnús Boson
removed_email_address@domain.invalid wrote:

What I want to do is post an image file within the form. Examples show

Your two first parameters have strings as keys, not symbols.
yeah, but that seems to work fine …

I worked out I can do :“myObject[image]” =>
File.new(’/baa/baa/screen-capture-1.png’) but that still doesn’t …
it creates the below message in Rails:

UploadColumn::UploadNotMultipartError (Do not know how to handle a
string with value ‘(File /baa/baa/screen-capture-1.png)’ that was
uploaded. Check if the form’s encoding has been set to
‘multipart/form-data’.):

Etienne


#4

On Fri, Nov 28, 2008 at 4:34 AM, e deleflie removed_email_address@domain.invalid wrote:

gotcha for non-newbies).
response = RestClient.post

string with value ‘(File /baa/baa/screen-capture-1.png)’ that was
uploaded. Check if the form’s encoding has been set to
‘multipart/form-data’.):

Perhaps you want to stick the contents of that file in the
“myObject[image]” param? If so File.new is not going to do it.

Try File.read(’/baa/baa/screen-capture-1.png’)

HTH,
Michael G.