首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RubyMotion使用Formotion和BubbleWrap将图像从iOS上传到Rails/S3

RubyMotion使用Formotion和BubbleWrap将图像从iOS上传到Rails/S3
EN

Stack Overflow用户
提问于 2013-06-20 08:02:49
回答 1查看 894关注 0票数 1

在我的Rails应用程序中,我使用回形针上传照片并将其存储在S3中。所以我想把这个功能带到我的iOS应用中。我使用this gist在我的RubyMotion应用程序中上传图片,但速度非常慢。在回形针上看到这期杂志后,我尝试了一种不同的方法:https://github.com/thoughtbot/paperclip/issues/254#issuecomment-321507

因此,我尝试使用BubbleWrap的:form_data :format并传递UIImage.UIImageJPEGRepresentation(@form.render[:photo], 1),以查看这是否会加快速度。然而,它并不起作用。无论选择了什么照片,实际上都没有正确渲染,因为我在服务器上看不到任何照片参数。而且UIImage.UIImageJPEGRepresentation(@form.render[:photo], 1)的输出看起来并不正确。

我的Formotion表单:

代码语言:javascript
复制
@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用于更新配置文件:

代码语言:javascript
复制
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")像要点建议的那样对图像进行编码吗?有没有办法用我传递给服务器的所有二进制数据来加速这个过程呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-20 14:42:28

我不想对BubbleWrap做这样的事情,但是...

。。下面是一个使用AFMotion(它是AFNetworking的包装器)上传文件的示例。

代码语言:javascript
复制
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的文档/示例

希望能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17203324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档