我正在尝试使用RestClient将数据作为多部分上载,如下所示:

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

io参数是一个包含我的文件的stringio,因此它来自内存而不是磁盘。
服务器(TomcatServlet)无法读取多部分数据,出现错误:
org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

所以我相信restclient不是以多部分格式发送的?有人看到问题了吗?我假设问题是在ruby(客户端)端,但是如果有人认为这可能是服务器端的问题,我可以发布我的servlet(spring)代码。
我还想知道restclient会对上传的文件名使用什么,因为没有实际的文件…您可以有一个没有文件名的多部分请求吗?

最佳答案

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

class MailIO < StringIO
  def path
    'message'
  end
end

我刚刚检查过这个,邮件枪的api已经很糟糕了。

关于ruby - RestClient从IO分段上传,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7984902/

10-11 04:54