ruby - 法拉第宝石不发送文件数据
问题描述
我正在使用Faraday
Gem 在 Ruby 中进行 API 自动化,以在我的 API 中自动上传文件。
我有以下问题:我需要将文件作为表单数据上传,但它不起作用。
这是我正在使用的最新语法:
conn = Faraday.new($api['upload']) do |f|
f.request :multipart
f.adapter Faraday.default_adapter
end
formdata = { :file => Faraday::UploadIO.new('./arquivo/pequeno.pdf', 'file/pdf') }
headers = {'Content-Type' => 'multipart/form-data', 'Authorization' => 'Bearer ' + @token, 'uuidUser' => @uuid}
conn.post('/upload', formdata, headers)
此外,我无法获得响应正文或代码。我收到方法主体或代码或状态不存在的错误。
你知道我做错了什么吗?
我让记录器进一步查看正在发生的事情,结果如下:
W, [2019-11-27T11:15:15.385754 #4208] WARN -- : HTTP 500
D, [2019-11-27T11:15:15.386412 #4208] DEBUG -- : "x-content-type-options: nosniff\nx-xss-protection: 1; mode=block\ncache-control: no-cache, no-store, max-age=0, must-revalidate\npragma: no-cache\nexpires: 0\nx-frame-options: DENY\ncontent-type: application/json;charset=UTF-8\ntransfer-encoding: chunked\ndate: Wed, 27 Nov 2019 14:15:14 GMT\nconnection: close\n\n{\"exception\":\"org.springframework.web.multipart.MultipartException\",\"status\":500,\"error\":[\"Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found\"]}"
解决方案
我解决了这个问题。
它是关于文件的类型。而不是使用'file/pdf'
我改为'application/pdf'
工作。
对于每种类型的文件,都有不同的使用方式:
pdf:
application/pdf
docx:
application/vnd.openxmlformats-officedocument.wordprocessingml.document
推荐阅读
- google-chrome - 检查中的控制台是否危险?
- php - 使一维数组多维
- python - 为数据的唯一组合生成日期
- angular - 为 API 请求设置标头时遇到问题,设置为接受 'application/json',但发送 'application/json, text/plain, */*'
- azure - Azure 函数是否支持 Cosmos DB 与 Mongo Api 的绑定?除了使用 MongoClient 是否有任何解决方法
- jquery - 日期格式不起作用或无法在网站上加载
- javascript - 使用 JavaScript 和 asp.net 核心从数据库中删除现有图像
- sql - 根据组内连续两天将指标列添加到表中
- python - Python 中的 % 或 .format 运算符的 C++ 等价物是什么?
- go - 如何获取 go 包的实际存储库 url