Forum: Ruby on Rails Upload via API leads to missing plus signs in HTTP-Body

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
TKAB (Guest)
on 2009-01-23 02:22
(Received via mailing list)
Hi!

I'm developing a Rails-app that needs to take images from a separate
program. I managed to upload base64 encoded images via HTTP-Post-
Request (Cocoa), the HTTP-Body looks like (base64-data is shortened)
this:

"filename=Pic1.jpg&content_type=image/jpeg&data=/9j/4AAQSkZJRgABAQECeUJ
+woRAD/4gxYSU"

When I access the data via params[:data] in my controller, all the
plus signs are gone and substituted with spaces. I checked the
outgoing data of the separate program with a sniffer and it contains
the plus signs, so the substitution must take place somewhere on the
server.

Does anybody have an idea what causes this behaviour?

Thanks,
Thomas
Frederick C. (Guest)
on 2009-01-23 02:24
(Received via mailing list)
On Jan 22, 11:00 pm, TKAB <removed_email_address@domain.invalid> wrote:
> When I access the data via params[:data] in my controller, all the
> plus signs are gone and substituted with spaces. I checked the
> outgoing data of the separate program with a sniffer and it contains
> the plus signs, so the substitution must take place somewhere on the
> server.

The standards dictate that with application/x-www-form-urlencoded
data (the default;
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.3.3)
spaces are encoded by + signs, so the server is doing the correct
thing by turning them into spaces.

Fred
TKAB (Guest)
on 2009-01-23 10:19
(Received via mailing list)
Thank you very much, I was completely unaware of that.
So it would be a better idea to imitate a form upload and set the
Content-Type to multipart/form-data? Or is there any other way?
Frederick C. (Guest)
on 2009-01-23 14:01
(Received via mailing list)
On 23 Jan 2009, at 08:18, TKAB wrote:

>
> Thank you very much, I was completely unaware of that.
> So it would be a better idea to imitate a form upload and set the
> Content-Type to multipart/form-data?
Certainly an option
> Or is there any other way?
>
You could replace + signs with what ever the correct % escape sequence
is, but the multipart/form-data route is probably simpler.

Fred
TKAB (Guest)
on 2009-01-23 17:47
(Received via mailing list)
OK, I understand.

Thanks for your help!
Robert W. (Guest)
on 2009-01-23 23:47
TKAB wrote:
> OK, I understand.
>
> Thanks for your help!

http://en.wikipedia.org/wiki/Base64#URL_applications

This might help. See the section on an alternative base64 that is safe
for URL encoding.
This topic is locked and can not be replied to.