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.
B181b0381f2f6378cbc17d4324c0dad7?d=identicon&s=25 TKAB (Guest)
on 2009-01-23 01: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
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-01-23 01:24
(Received via mailing list)
On Jan 22, 11:00 pm, TKAB <tbil...@gmail.com> 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
B181b0381f2f6378cbc17d4324c0dad7?d=identicon&s=25 TKAB (Guest)
on 2009-01-23 09: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?
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-01-23 13: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
B181b0381f2f6378cbc17d4324c0dad7?d=identicon&s=25 TKAB (Guest)
on 2009-01-23 16:47
(Received via mailing list)
OK, I understand.

Thanks for your help!
280b78a61a968391b7e07e912be102a8?d=identicon&s=25 Robert Walker (robert4723)
on 2009-01-23 22: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.