来自IO的RestClient分段上传

Ton*_*y R 2 ruby file-upload http multipart rest-client

我正在尝试使用RestClient将数据作为multipart上传,如下所示:

response = RestClient.post(url, io, {
        :cookies => {
          'JSESSIONID' => @sessionid
        }, 
        :multipart => true, 
        :content_type => 'multipart/form-data'
      })
Run Code Online (Sandbox Code Playgroud)

io参数是包含我的文件StringIO的,所以它从内存而不是从磁盘.

服务器(Tomcat servlet)无法读取多部分数据,从而出错:

org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
Run Code Online (Sandbox Code Playgroud)

所以我相信RestClient不会以多部分格式发送它?有谁看到了问题?我假设问题出在Ruby(客户端)端,但如果有人认为它可能是服务器端问题,我可以发布我的servlet(Spring)代码.

我也想知道RestClient会用于上传的文件名,因为没有实际的文件...你有没有文件名的多部分请求吗?

Tom*_*ord 7

你可以这样做,它只需要子类化StringIO并向它添加一个非零路径方法:

class MailIO < StringIO
  def path
    'message'
  end
end
Run Code Online (Sandbox Code Playgroud)

我刚检查过这个,而且Mailgun api对此非常不满意.