私の Rails アプリでは、Paperclip を使用して写真をアップロードし、S3 に保存しています。そこで、その機能を iOS アプリに取り入れたいと考えました。このgist を使用して、RubyMotion アプリで画像のアップロードが機能するようにしましたが、信じられないほど遅かったです。Paperclip でこの古い問題を見た後、別のアプローチを試しました: https://github.com/thoughtbot/paperclip/issues/254#issuecomment-321507。
そこで、代わりに BubbleWrap:form_data
:format
とpass を使用UIImage.UIImageJPEGRepresentation(@form.render[:photo], 1)
して、速度が向上するかどうかを確認してみました。しかし、それは機能していません。サーバーに写真パラメータが表示されないため、選択した写真が実際には正しくレンダリングされていないようです。そしての出力はUIImage.UIImageJPEGRepresentation(@form.render[:photo], 1)
正しく見えません。
My 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']
}]
}]
})
プロファイルを更新する私の BubbleWrap 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")で示唆するように画像をエンコードする必要がありますか? サーバーに渡すすべてのバイナリ データを使用して、このプロセスを高速化する方法はありますか?