В моем приложении Rails я использую Paperclip для загрузки фотографий и их сохранения в S3. Поэтому я хотел использовать эту функциональность в своем приложении для iOS. Я получил загрузку изображений для работы в моем приложении RubyMotion, используя this gist, но он был невероятно медленным. Увидев этот датированный выпуск в Paperclip, я попробовал другой подход: https://github.com/thoughtbot/paperclip/issues/254#issuecomment-321507.RubyMotion Загрузка изображения с iOS в Rails/S3 с использованием Formotion и BubbleWrap
Итак, я попытался использовать 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']
}]
}]
})
Мой 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 «)? Есть ли способ ускорить этот процесс вообще со всеми двоичными данными, которые я передаю на свой сервер?
Похоже, пришло время переместиться из BubbleWrap в AFMotion. Благодаря! – tvalent2
@ tvalent2, пожалуйста, отметьте ответ как принятый, если этот ответ сработал для вас! – siekfried