I have a Roda/Rack app. In a post handler this is data that I receive via a form enctype="multipart/form-data"
An image -- binary data -- can be sent via it as well, that's why it's multipart/form-data
My code:
r.body.rewind
body_params = r.body.read
And it returns this:
body_params
=>
"------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"utf8\"\r\n\r\n\xE2\x9C\x93\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"authenticity_token\"\r\n\r\n7/Q00bPqz5dKz7ktrlFMpK5mRMO/T8vwyDu1opc/3sdizUvEZrg6ECFSGUnLD4QcX3PHgj68l6k3Z9HTQE9/Jg==\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[image_temp_url]\"\r\n\r\n\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[counterfoil_name]\"\r\n\r\nName:\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[counterfoil_email]\"\r\n\r\nEmail:\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[event_name]\"\r\n\r\ndasf\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[event_date]\"\r\n\r\nfda\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[description]\"\r\n\r\n \r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[text_color]\"\r\n\r\n#000\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[border_color]\"\r\n\r\n#cf2a27\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[paper_size]\"\r\n\r\nA4\r\n------WebKitFormBoundary123ABC\r\nContent-Disposition: form-data;
name=\"model123[font]\"\r\n\r\nArial\r\n------WebKitFormBoundary123ABC--\r\n"
Now, how can I parse params so that I can retrieve them by name, such as body_params["model123"]["description"]
?
Easy: just use
request.params
(orr.params
):The
#params
and the#body
methods actually come fromRack::Request
. This is possible because Roda's request object,Roda::RodaRequest
, inherits from it.