android - 将带有 JSONObject 的 Base64 发送到服务器(ANDROID)

标签 android json base64

当我将图像编码为 base 64 并尝试通过 JSON 发送它时,我认为我遇到了一个奇怪的编码错误。

我正在对以位图开头的照片进行编码,如下所示:

 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            photo.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
            byte[] byteArray = byteArrayOutputStream .toByteArray();
            encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);

然后我在 json 上发送“编码”字符串

 JSONObject postDataParams = new JSONObject();

        postDataParams.put(ArchivoTexto, encoded);

现在我看到的问题是,当我向 JSON 发送编码字符串时,控制台说它发送的内容如下所示:

\/9j\/4AAQSkZJRgABAQAAAQABAAD\/2wB

但如果我将“编码”字符串复制到剪贴板,它看起来像这样:

/9j/4AAQSkZJRgABAQAAAQABAAD/2wB 

反斜杠消失了,如果我使用网站解码来自剪贴板的字符串,它会成功解码图像,但是当我通过 JSON 将字符串发送到服务器时,它看起来很破损,所以我怀疑反斜杠使其中断。

我的问题是我应该寻找一种方法在发送 JSON 上的字符串之前删除反斜杠,还是服务器无法正确解释字符串的错误?

最佳答案

在您的 PHP 文件中执行此操作

  1. 从发布的数据(base64)创建一个 Json 字符串,并删除“\n”字符(以避免该字符)
  2. 解码该 JSON 字符串以删除该 JSON 字符
  3. 获取解码后的字符串

这是我的工作

$img_base64 = $_POST['ArchivoTexto'];
$sdata = '{"val" : "'.sub_str("\n","",$img_base64).'"}';

$ddata = json_decode($sdata);

$jdata = $ddata->val;//$jdata contain the clear base64 String

关于android - 将带有 JSONObject 的 Base64 发送到服务器(ANDROID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45264184/

相关文章:

java - Base64 编码图像最快的 Java 库是什么?

c# - 图片的Base64编码

java - 需要 ContentProvider 来访问 SharedPreferences

android - 创建一个自定义 Drawable 并在 XML 中使用它

android - `gomobile build` 和 `gomobile install` 抛出 "gomobile: EOF"

javascript - 正则表达式在 JavaScript 中的键周围添加双引号

javascript - 如何将带有数组的字符串转换为数组

java - 如何重置卡牌堆或获取上一张卡?

javascript - 使用 ng-repeat 和条件语句填充表格

vba - 如何使用 Excel VBA 有效地对字符串进行 Base64 编码?