Android 将位图上载到Ruby Rails服务器
我需要发送JSON,如下所示:Android 将位图上载到Ruby Rails服务器,android,ruby-on-rails,ruby,json,bitmap,Android,Ruby On Rails,Ruby,Json,Bitmap,我需要发送JSON,如下所示: story = { :story => { :uuid => "1234567890", :title => "Title", :subtitle => "Subtitle", :private => true, :bytes => [
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>
试试这个方法
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);
如果您希望以JSON格式发送图像,则必须将图像转换为Base64字符串,然后如果我将图像作为Base64发送,则发送将起作用,而不是在Rails上出现错误:曲别针::AdapterRegistry::NoHandleError(未找到“lhlhlkhlkhpiopHjKguyUV…”的处理程序)LHLHLHLHLHLHHLKHPIOPHJKGUYUV-这是字符串编码Dihor Kostenko@有解决方案吗?