法拉第宝石不发送fileData

时间:2019-11-25 18:51:50

标签: ruby automation header rubygems faraday

我正在使用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\"]}"

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。

这取决于文件的类型。我没有使用'file/pdf',而是改为'application/pdf'并开始工作。

每种文件都有不同的使用方式:

pdf:
application/pdf
docx:
application/vnd.openxmlformats-officedocument.wordprocessingml.document