【问题标题】:NoMethodError: undefined method `bytesize' for #<Array:NoMethodError: #<Array: 的未定义方法 `bytesize'
【发布时间】:2012-08-21 06:25:45
【问题描述】:

我正在尝试调用我的自定义 api,它使用回形针上传文件,它在本地使用 https://github.com/jwagener/httmultiparty 工作正常,但是当我尝试调用 api 并为 heroku 部署的应用程序上传文件时,会发生以下错误。

NoMethodError: undefined method `bytesize' for #<Array:0x00000006e71980>
    from /home/umair/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:1735:in `send_request_with_body'
    from /home/umair/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:1724:in `exec'
    from /home/umair/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:1189:in `transport_request'
    from /home/umair/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:1177:in `request'
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb:51:in `request'
    from /home/umair/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:1170:in `block in request'
    from /home/umair/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:627:in `start'
    from /home/umair/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/net/http.rb:1168:in `request'
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb:51:in `request'
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/httparty-0.8.3/lib/httparty/request.rb:76:in `perform'
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/httparty-0.8.3/lib/httparty/request.rb:208:in `handle_response'
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/httparty-0.8.3/lib/httparty/request.rb:90:in `perform'
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/httparty-0.8.3/lib/httparty.rb:400:in `perform_request'
    from /home/umair/Projects/core/lib/httmultiparty.rb:81:in `post'
    from (irb):5
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/railties-3.0.7/lib/rails/commands/console.rb:44:in `start'
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/railties-3.0.7/lib/rails/commands/console.rb:8:in `start'
    from /home/umair/.rvm/gems/ruby-1.9.2-p320@gm/gems/railties-3.0.7/lib/rails/commands.rb:23:in `<top (required)>'

我在 ruby​​ 控制台上运行它来测试文件上传 api。

HttpClient.post('/storage.xml',:basic_auth=>   {:username=>'badde88248834bec759d94563f102d52e19702fa',:password=>'b890b48e2769192372bf531fc46827cd86bea23f'} ,:query => {:auth_token=> '1045aa26cda23f5f3aec737a45e7ba0017c1a7cf',:user_file => File.new( '/home/umair/Login.png')})

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 file-upload heroku


    【解决方案1】:

    我遇到了同样的问题,但找不到解决方案。现在我正在这样做,它只需要multipart-post gem。

    class Client
      require 'net/http/post/multipart'
    
      def self.perform inputurl, file
        url = URI.parse(inputurl)
        File.open(file) do |transfile|
          Net::HTTP.start(url.host, url.port) do |http|
            req = Net::HTTP::Post::Multipart.new(
              url.path,
              file1: UploadIO.new(transfile, "multipart/formdata", File.basename(file)),
            )
            response = http.request(req)
          end
        end
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 2011-08-24
      • 1970-01-01
      相关资源
      最近更新 更多