【发布时间】:2021-05-05 05:52:53
【问题描述】:
我对 ruby on rails 很陌生,所以我很可能遗漏了一些简单的东西,但我这辈子都想不通。
我已经使用 ruby on rails 创建了一个 API 服务器,但我似乎无法将 JSON 与图片一起发布。我一直在服务器端收到错误,抱怨编码错误。
ActionController::BadRequest (Invalid request parameters: invalid %-encoding
.rbenv/versions/3.0.1/lib/ruby/3.0.0/uri/common.rb:324:in decode_www_form_component'
我正在使用 Postman 发出请求。我正在使用 form-data 选项在我的 JSON 中包含一个文本条目,在我的 PNG 中包含一个文件条目。标头 Content-Type 是多部分/混合的。各个键/值对分别为application/json 和image/png。我不知道这是邮递员问题还是红宝石控制器问题。或错误。
任何见解或进一步的问题都会对我有所帮助。
编辑: 这是我在邮递员内部发帖请求的代码。
curl --location --request POST 'http://localhost:3000/api/v1/events/1/eventphotos/' \
--header 'Content-Type: multipart/mixed' \
--form 'data={
"eventphoto":{
"event_id":1,
"photopath":"nothing to see here"
}
}' \
--form 'picture=@/Users/chancefinley/Downloads/mushroom.png'
【问题讨论】:
-
在 Postman 中,您有一个代码选项(在发送按钮下方),您可以粘贴其中的内容吗?
-
@Joel_Blum 甚至都不知道它的存在。我已经编辑了问题并将其添加到上面
-
我注意到在生成的 curl 代码中,邮递员不包括我提交的表单数据的子类型。也许这就是我的 Rails 应用程序绊倒的原因?
-
在 PostMan 中以
x-www-form-urlencoded发送数据,错误就会消失。当您遇到相对于当前编码的无效字符时会发生这种情况。
标签: ruby-on-rails postman