首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当发送为"multipart/form-data“时,如何在Roda/Rack中按名称获取参数?

当发送为"multipart/form-data“时,如何在Roda/Rack中按名称获取参数?
EN

Stack Overflow用户
提问于 2018-02-17 13:58:41
回答 1查看 290关注 0票数 0

我有一个Roda/Rack应用程序。在post处理程序中,这是我通过表单enctype="multipart/form-data"接收的数据图像--二进制数据--也可以通过它发送,这就是为什么它是multipart/form-data

我的代码:

代码语言:javascript
复制
  r.body.rewind
  body_params = r.body.read

并返回以下内容:

代码语言:javascript
复制
  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"

现在,如何解析参数以便按名称检索它们,如body_params["model123"]["description"]

EN

回答 1

Stack Overflow用户

发布于 2018-03-24 21:03:59

简单:只需使用request.params (或r.params):

代码语言:javascript
复制
2.5.0 :001 > body_params = r.body.tap(&:rewind).read
 => "-----------------------------17731730531088932352830400330\r\nContent-Disposition: form-data;
     name=\"model123[description]\"\r\n\r\nThis is the description.\r\n-----------------------------17731730531088932352830400330\r\nContent-Disposition: form-data;
     name=\"model123[font]\"\r\n\r\nComic Sans\r\n-----------------------------17731730531088932352830400330--\r\n"
2.5.0 :002 > r.params
 => {"model123"=>{"description"=>"This is the description.", "font"=>"This is something else."}}
2.5.0 :003 > request.params["model123"]["description"]
 => "This is the description."

#params#body方法实际上来自Rack::Request。这是可能的,因为Roda的请求对象,Roda::RodaRequestinherits from it

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48838384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档