2013-06-20 95 views
1

在我的Rails應用程序中,我使用Paperclip上傳照片並將它們存儲在S3中。所以我想把這個功能帶到我的iOS應用中。我使用this gist在RubyMotion應用中上傳圖片上傳,但速度令人難以置信。在回形針中看到這個日期問題後,我嘗試了一種不同的方法:https://github.com/thoughtbot/paperclip/issues/254#issuecomment-321507RubyMotion使用Formotion和BubbleWrap將圖像從iOS上傳到Rails/S3

因此,我嘗試使用BubbleWrap的:form_data:format並傳遞UIImage.UIImageJPEGRepresentation(@form.render[:photo], 1),而不是看看是否會加快速度。但它不起作用。看起來好像所選的照片實際上沒有正確渲染,因爲我在服務器中沒有看到任何照片參數。 UIImage.UIImageJPEGRepresentation(@form.render[:photo], 1)的輸出看起來不正確。

我的Formotion形式:

@form = Formotion::Form.new({ 
    title: "Settings", 
    sections: [{ 
    title: "Personal Information", 
    rows: [{ 
     title: "Photo", 
     type: :image, 
     key: :photo, 
     value: @profile_photo 
    }, { 
     title: "Name", 
     type: :string, 
     placeholder: "Name", 
     key: :name, 
     value: @profile['name'] 
    }] 
    }] 
}) 

我的氣泡布PUT以更新的姿態:

profile_photo = UIImage.UIImageJPEGRepresentation(@form.render[:photo], 1) 

data = { 
    'profile[name]' => @form.render[:name], 
    'profile[photo]' => profile_photo, 
    'user[api_token]' => CONFIG.user.api_token, 
    _method:    'PUT' 
} 

BW::HTTP.post("#{DEFAULT_URL}/profiles/#{CONFIG.user.profile_id}", { format: :form_data, payload: data }) do |response| 
    parsed_response = BW::JSON.parse(response.body.to_str) 
    if response.ok? 
    @data = parsed_response 
    self.dismissViewControllerAnimated(true, completion:lambda { parent.load_profile() }) 
    else 
    App.alert("#{parsed_response.first}") 
    end 
end 

所以我的問題是:我必須編碼與.pack像要點圖像顯示(「M0 「)?有沒有辦法通過我傳遞給服務器的所有二進制數據加速這個過程?

回答

2

我不知道做這樣的事情有氣泡布,但...

..這裏是與AFMotion上傳文件(這大約是AFNetworking包裝)的一個例子。

client = AFMotion::Client.build("your endpoint") do 
    header "Accept", "application/json" 
    operation :json 
end 

image = my_function.get_image 
data = UIImagePNGRepresentation(image) 

client.multipart.post("avatars") do |result, form_data| 
    if form_data 
    # Called before request runs 
    # see: https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ 
    form_data.appendPartWithFileData(data, name: "avatar", fileName:"avatar.png", mimeType: "image/png") 
    elsif result.success? 
    ... 
    else 
    ... 
    end 
end 

你可能想看看AFMotion here

的文檔/例子希望它幫助。

+0

看起來像現在是從BubbleWrap轉移到AFMotion的時候了。謝謝! – tvalent2

+0

@ tvalent2如果此答案適合您,請將答案標記爲已接受! – siekfried

相關問題