0

我正在使用 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
4

1 回答 1

1

上传图像应该通过 POST 请求完成,而不是像您所做的那样通过 GET 请求完成。大多数 Web 服务器对 GET 请求的大小都有限制,通常为 8k,请阅读此处了解更多信息HTTP GET 请求的最大长度?,所以它不适合图像。

玩转气泡运动并查看服务器上日志文件中的请求以查看结果。尝试使请求看起来像从 rails 本身发出的请求,即来自您上传到控制器的网页。

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

于 2013-01-07T01:09:45.760 回答