# When I upload a XML file, I get Rack::QueryParser::InvalidParameterError

**URL:** <https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719>\
**Category:** issues\
**Created:** [November 14, 2022, 9:17am UTC](https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719 "2022-11-14T09:17:39Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![wuarmin](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.hanakai.org/wuarmin/32/548_2.png) [@wuarmin](https://discourse.hanakai.org/u/wuarmin)\
**Post date:** [November 14, 2022, 9:17am UTC](https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719/1 "2022-11-14T09:17:39Z")

</div>

Hey,  
this works in Hanami 1.3, but if I try to upload a XML file to a hanami 2 app, I get a  
`Rack::QueryParser::InvalidParameterError`

```xml
<!--/tmp/test/test.xml-->
<root>
  <name>100 % Meijer</name>
</root>

```

```nohighlight
curl -F 'file=@/tmp/test/test.xml' http://localhost:2300/test/upload

```

I get following error

```nohighlight
Rack::QueryParser::InvalidParameterError: invalid %-encoding

```

The `Content-Type` is `multipart/form-data`. Changing it to `application/xml` does not change anything.  
Is there a way to configure the Hanami 2 application to make this work?

Thanks

---

<div class="post-metadata">

**Author:** ![jodosha](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.hanakai.org/jodosha/32/710_2.png) [@jodosha](https://discourse.hanakai.org/u/jodosha)\
**Post date:** [November 14, 2022, 9:35am UTC](https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719/2 "2022-11-14T09:35:47Z")

</div>

@wuarmin This seems to be a Rack bug: [Exception when JSON body contains % · Issue #237 · hanami/router · GitHub](https://github.com/hanami/router/issues/237#issuecomment-1311710903)

---

<div class="post-metadata">

**Author:** ![wuarmin](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.hanakai.org/wuarmin/32/548_2.png) [@wuarmin](https://discourse.hanakai.org/u/wuarmin)\
**Post date:** [November 14, 2022, 9:54am UTC](https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719/3 "2022-11-14T09:54:27Z")

</div>

@jodosha Thanks.  
Oh, is there already an open issue at `rack`? I can’t find any? Do you know a workaround?

---

<div class="post-metadata">

**Author:** ![wuarmin](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.hanakai.org/wuarmin/32/548_2.png) [@wuarmin](https://discourse.hanakai.org/u/wuarmin)\
**Post date:** [November 14, 2022, 1:22pm UTC](https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719/4 "2022-11-14T13:22:12Z")

</div>

I opened an issue [Uploading XML-file results in Rack::QueryParser::InvalidParameterError · Issue #1984 · rack/rack · GitHub](https://github.com/rack/rack/issues/1984)

---

<div class="post-metadata">

**Author:** ![wuarmin](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.hanakai.org/wuarmin/32/548_2.png) [@wuarmin](https://discourse.hanakai.org/u/wuarmin)\
**Post date:** [November 14, 2022, 4:33pm UTC](https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719/5 "2022-11-14T16:33:54Z")

</div>

@jodosha It seems it’s a hanami [issue](https://github.com/rack/rack/issues/1984). It seems that the issue lies here: [router/router.rb at d4f7a677a34978f24c153b9c96b90a03dd3e3a9b · hanami/router · GitHub](https://github.com/hanami/router/blob/d4f7a677a34978f24c153b9c96b90a03dd3e3a9b/lib/hanami/router.rb#L923)

We have to change the multipart parsing.

```nohighlight
  Rack::QueryParser::InvalidParameterError:
       invalid %-encoding (<root><name>100% Meijer</name></root>)
     # /usr/local/bundle/gems/rack-2.2.4/lib/rack/utils.rb:57:in `unescape'
     # /usr/local/bundle/gems/rack-2.2.4/lib/rack/query_parser.rb:159:in `unescape'
     # /usr/local/bundle/gems/rack-2.2.4/lib/rack/query_parser.rb:73:in `block (2 levels) in parse_nested_query'
     # /usr/local/bundle/gems/rack-2.2.4/lib/rack/query_parser.rb:73:in `map!'
     # /usr/local/bundle/gems/rack-2.2.4/lib/rack/query_parser.rb:73:in `block in parse_nested_query'
     # /usr/local/bundle/gems/rack-2.2.4/lib/rack/query_parser.rb:72:in `each'
     # /usr/local/bundle/gems/rack-2.2.4/lib/rack/query_parser.rb:72:in `parse_nested_query'
     # /usr/local/bundle/gems/rack-2.2.4/lib/rack/utils.rb:102:in `parse_nested_query'
     # /usr/local/bundle/gems/hanami-router-2.0.0.rc1/lib/hanami/router.rb:923:in `_params'

```

---

<div class="post-metadata">

**Author:** ![jodosha](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.hanakai.org/jodosha/32/710_2.png) [@jodosha](https://discourse.hanakai.org/u/jodosha)\
**Post date:** [November 14, 2022, 7:04pm UTC](https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719/6 "2022-11-14T19:04:16Z")

</div>

@wuarmin I’ll have a look at it. Thanks.

---

<div class="post-metadata">

**Author:** ![wuarmin](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.hanakai.org/wuarmin/32/548_2.png) [@wuarmin](https://discourse.hanakai.org/u/wuarmin)\
**Post date:** [November 15, 2022, 10:45am UTC](https://discourse.hanakai.org/t/when-i-upload-a-xml-file-i-get-rack-invalidparametererror/719/7 "2022-11-15T10:45:51Z")

</div>

@jodosha I had to fix this for myself quickly. Here’s my approach: [Fix parsing of multipart/form-data by wuarmin · Pull Request #239 · hanami/router · GitHub](https://github.com/hanami/router/pull/239)
