【问题标题】:Upload Bitmap to Ruby Rails server将位图上传到 Ruby Rails 服务器
【发布时间】:2014-05-13 08:45:08
【问题描述】:

我需要像下面这样发送 JSON:

story = {
            :story => {
              :uuid => "1234567890",
              :title => "Title",
              :subtitle => "Subtitle",
              :private => true,
              :bytes => [
                {
                  :uuid => "1234567890",
                  :timelineDate => "1970-01-01T00:00:00.000+00:00",
                  :caption => "Byte 1"
                  :photo => image
                }
    }

没有图像发送一切正常,但图像作为位图在 JSON 服务器返回错误

我以这种方式发送的请求:

  RestClient client = RestClient.getInstance(this, URL);
                        client.addHeader("Content-Type", "application/json");
                        client.addHeader("Authorization", "Token token=" token);    

//create JSON from Java objects
                        client.setJSONString(json);
                        client.execute(RestClient.RequestMethod.POST);

必须是什么类型的图像才能将其发送到 Rails 服务器?

Rails 服务器想要这样的图像:

 #<Rack::Test::UploadedFile:0x00000103ea6330
     @content_type="image/jpg",
     @original_filename="photo.jpg",
     @tempfile=
      #<File:/var/folders/1j/8b1khcf57fv1stf87gcylk8c0000gn/T/photo.jpg20140512-3303-1u2nkqo>

【问题讨论】:

  • 如果你想以 JSON 格式发送图片,你必须将图片转换为 Base64 字符串然后发送才能工作

标签: android ruby-on-rails ruby json bitmap


【解决方案1】:

试试这个方法

1) 像这样将位图转换为Base64字符串

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();  
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();

使用以下方法从字节数组编码base64

String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);

2) 以 JSON 格式设置 photo 的值

   json.put("photo",encoded);

【讨论】:

  • 如果我将图像作为 Base64 发送而不是在 Rails 上出错:PaperClip::AdapterRegisrty::NoHandleError(没有为“lhLHLhLHLhLhLkhLhLhLkhLkhPioPHjkguyUV......”找到处理程序)lhLHLhLHLhLhLkhLhLhLkhLkhPioPHjkguyUV - 它是字符串编码的跨度>
  • Ihor Kostenko@ 有什么解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 2022-09-26
  • 1970-01-01
相关资源
最近更新 更多