Objective c 如何使用RubyMoon上传照片?

Objective c 如何使用RubyMoon上传照片?,objective-c,rubymotion,Objective C,Rubymotion,我正在使用Rubymotion构建一个iOS应用程序。 我需要让用户用相机抓拍一张照片,然后使用BubbleWrap Http模块(或更好的模块)将其上传到Rails 3后端(带回形针) 我该怎么做 这是我的代码: 这是我在拍摄后使用的: 这是我的上传代码: data = {access_token: TOKEN, id: task, image: image} BubbleWrap::HTTP.get("#{URL}#{project}/message", {payload: data

我正在使用Rubymotion构建一个iOS应用程序。 我需要让用户用相机抓拍一张照片,然后使用BubbleWrap Http模块(或更好的模块)将其上传到Rails 3后端(带回形针)

我该怎么做

这是我的代码:

这是我在拍摄后使用的:

这是我的上传代码:

data = {access_token: TOKEN, id: task, image: image}

   BubbleWrap::HTTP.get("#{URL}#{project}/message", {payload: data}) do |response|
      if response.ok?
        json = BubbleWrap::JSON.parse(response.body)
        if json['total'] > 0
          infos = json['taskinfos'].map {|ej| self.from_json(ej["taskinfo"])} 
          block.call(true, infos)
        else
          block.call(false, nil)
        end
      else
        block.call(false, nil)
      end
    end

上传图像应该通过POST请求完成,而不是像您这样通过GET请求完成。大多数web服务器对GET请求的大小有一个限制,通常为8k,请阅读此处了解更多信息,因此它不适用于图像

使用bubble motion进行游戏,查看服务器上日志文件中的请求,看看结果如何。尝试使请求看起来像是从rails本身发出的请求,即从您上载到控制器的网页发出的请求


因此,您可以将请求更改为POST,让人们知道您收到了哪些错误消息。

Jonathan,您提出了许多非常广泛的问题,并提供了许多潜在的答案。我不知道它们是否适合Stackoverflow。恕我直言,Jamon。这不是一个真正广泛的问题。RubyMoon和图像上传非常狭窄。我正在尝试学习RubyMoon,不幸的是,由于官方文档非常缺乏,因此会有很多问题。我感觉到你对iOS文档的痛苦,但“我如何做到这一点?”过于宽泛。尝试一些事情,如果它们不起作用,那么就来询问。这样你会得到更好的答案。我不介意回答你更具体的问题(我已经问过好几次了),但我只是要求你更具体一些,在发布之前尝试一些事情。
metadata = info.objectForKey(UIImagePickerControllerMediaMetadata)
the_image = info.objectForKey(UIImagePickerControllerOriginalImage)

image = view.viewWithTag 3
image.image = the_image

picker.dismissModalViewControllerAnimated(true)
data = {access_token: TOKEN, id: task, image: image}

   BubbleWrap::HTTP.get("#{URL}#{project}/message", {payload: data}) do |response|
      if response.ok?
        json = BubbleWrap::JSON.parse(response.body)
        if json['total'] > 0
          infos = json['taskinfos'].map {|ej| self.from_json(ej["taskinfo"])} 
          block.call(true, infos)
        else
          block.call(false, nil)
        end
      else
        block.call(false, nil)
      end
    end