我正在使用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
答案 0 :(得分:1)
上传图片应该通过POST请求完成,而不是像你那样完成GET请求。大多数Web服务器对GET请求的大小有限制,通常为8k,请在此处阅读以获取更多信息maximum length of HTTP GET request?,因此它不适合图像。
玩泡泡动作并查看服务器上日志文件中的请求,看看是什么。尝试使请求看起来像是在rails内部发出的请求,即从您上传到控制器的网页。
因此,您可以将请求更改为POST,并让人们知道您收到的错误消息。