如何防止Rails处理大型XML帖子

chr*_*ton 3 xml ruby-on-rails

在我们的rails应用程序中,我们有许多操作可以执行常规的webapp操作.但是,我们有一个接受大型XML文件的操作.我想保持将XML解析为params.相反,我希望能够获取URL参数(/ documents/{id}/action),然后将xml文件写出到特定目录.如何让Rails处理它?

我该如何定义处理这个的动作?

def handle_xml
   # what to put here
end
Run Code Online (Sandbox Code Playgroud)

上传是使用Content-Type完成的:application/xml它是一个单独的文件,而不是多部分表单的一部分.示例curl语句将是:

curl-H 'Accept: application/xml' -H 'Content-Type: application/xml' -X POST -d '<?xml version="1.0" encoding="UTF-8"?><test></test>' http://0.0.0.0:3000/controller/handle_xml
Run Code Online (Sandbox Code Playgroud)

ada*_*amc 5

如果要阻止rails自动将XML数据解析为参数哈希,则必须使用自己的自定义版本替换ParamsParser中间件.

当文件发布到rails时,ParamsParser中间件会修改请求参数,如果数据格式为xml,则将其转换为Hash.您可以在rails 中的params_parser.rb文件中找到详细信息.

这是一个RoR邮件列表消息,类似于您提出的问题

不幸的是,作为一个新用户,我无法发布任何更多链接,但您应该搜索谷歌"使用自定义机架中间件消毒POST参数",以获取有关编写自定义机架中间件的更多详细信息.