【问题标题】:ruby rest_client, mimetype not recognizedruby rest_client,mimetype 无法识别
【发布时间】:2014-10-01 07:02:18
【问题描述】:

我有一个执行以下调用的 RestClient:

RestClient::Request.new(
    :method => "post",
    :url => "http://myservice.com/call.json",       
    :payload => {'document[data]' => File.new(e.image.path, 'rb')},
    :headers => { :accept => :json, :content_type => :json}
    ).execute

由于我不是 REST 服务的作者,所以我实现了一个小型测试服务器来接收 rest 调用。 您可以在下面找到实际的请求和应该是什么。 我的问题是:我在哪里指定附加文件的 MIME 类型?

它是什么:

#<:http::uploadedfile:0x0... form-data name='\"document[data]\";'>

应该是什么:

#<:http::uploadedfile:0x0... form-data name='\"document[data]\";'>

【问题讨论】:

    标签: ruby-on-rails rest-client


    【解决方案1】:

    奇怪,RestClient应该可以根据文件扩展名获取mime类型。

    无论如何,如果我没记错的话,没有办法为基于文件的多部分段传递 mime 类型,但是 Payload 类中有代码可以查找 content_type。这可能已经修复,但在解决此问题之前,此 hack 应该可以正常工作。

    module MyModule
       def content_type
         "application/pdf"
       end
    end
    
    f = File.new(e.image.path, 'rb')}
    f.extend(MyModule)
    
    RestClient::Request.new(
       :method => "post",
       :url => "http://myservice.com/call.json",       
       :payload => {'document[data]' => f},
       :headers => { :accept => :json, :content_type => :json}
       ).execute
    

    【讨论】:

    • 这个答案对我帮助很大:点赞还不够!!!另一方面,我必须检查一个不棘手的解决方案。我想我从您的解决方案开始,检查 RestClient 调用您的 content_type 方法的位置
    猜你喜欢
    • 2014-04-18
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2015-03-11
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多