如何用Rubymotion上传照片?

时间:2012-12-11 13:03:52

标签: objective-c rubymotion

我正在使用Rubymotion构建iOS应用。 我需要让用户使用相机拍摄照片,然后使用BubbleWrap Http模块将其上传到Rails 3后端(使用Paperclip)(或者更好?)。

我该怎么做?

这是我的代码:

controller = UIImagePickerController.alloc.init
controller.sourceType = UIImagePickerControllerSourceTypeCamera
controller.mediaTypes = [KUTTypeImage]
controller.allowsEditing = true
controller.delegate = self

self.navigationController.presentModalViewController(controller, animated:true)

这是我拍摄后使用的:

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

1 个答案:

答案 0 :(得分:1)

上传图片应该通过POST请求完成,而不是像你那样完成GET请求。大多数Web服务器对GET请求的大小有限制,通常为8k,请在此处阅读以获取更多信息maximum length of HTTP GET request?,因此它不适合图像。

玩泡泡动作并查看服务器上日志文件中的请求,看看是什么。尝试使请求看起来像是在rails内部发出的请求,即从您上传到控制器的网页。

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