2012-12-11 132 views
0

我正在使用Rubymotion構建iOS應用程序。 我需要讓用戶使用相機捕捉照片,然後使用BubbleWrap Http模塊(或更好的?)將其上傳到Rails 3後端(使用Paperclip)。如何用Rubymotion上傳照片?

我該怎麼做?

這是我的代碼:

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

喬納森,你問了很多真正廣泛的問題,並提出了很多可能的答案。我不知道它們適合於Stackoverflow。 –

+0

非常尊重Jamon。這不是一個非常廣泛的問題。它非常窄,Rubymotion和圖片上傳。 –

+0

我想學習Rubymotion,所以不幸的是會有很多問題,因爲官方文檔非常缺乏。 –

回答

1

上傳圖片應通過POST請求和不是像你這樣做的GET請求。大多數Web服務器對GET請求的大小有限制,通常爲8k,請在此處閱讀以獲得更多信息maximum length of HTTP GET request?,因此它不適用於圖像。

玩泡泡動作並查看服務器上日誌文件中的請求,以查看出現的內容。嘗試使請求看起來像是從rails內部發出的請求,即從上傳到控制器的網頁。

因此,您可以將請求更改爲POST,並讓人們知道您獲得了哪些錯誤消息。