gpt4 book ai didi

android - 使用 httpurlconnection 和 android 上传图像字节数组

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:11 32 4
gpt4 key购买 nike

我正在开发小型 android 应用程序,我想在其中将图像从我的 android 设备上传到我的服务器。为此,我正在使用 HttpURLConnection

我是按以下方式做的:

Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.arrow_down_float);

ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 100, bos);

byte[] data = bos.toByteArray();

connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "image/jpeg");
connection.setRequestMethod(method.toString());

ByteArrayOutputStream bout = new ByteArrayOutputStream();
bout.write(data);
bout.close();

我正在使用 ByteArrayOutputStream 但我不知道如何使用我的 httpurlconnection 传递该数据。这是传递原始图像数据的正确方法吗?我只想发送包含图像数据的字节数组。没有转换或没有多部分发送。我的代码工作正常,没有任何错误,但我的服务器给了我答复{"error":"Mimetype 不支持:inode\/x-empty"}

我使用 setEntity 通过 httpclient 完成了此操作,并且它工作正常。但我想使用 urlconnection。

我做错了什么吗?这该怎么做?谢谢。

最佳答案

您必须打开输出流连接并将数据写入其中。你可以试试这个:

Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.arrow_down_float);

connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "image/jpeg");
connection.setRequestMethod(method.toString());
OutputStream outputStream = connection.getOutputStream();

ByteArrayOutputStream bos = new ByteArrayOutputStream(outputStream);
bitmap.compress(CompressFormat.JPEG, 100, bos);

bout.close();
outputStream.close();

用这个语句:

bitmap.compress(CompressFormat.JPEG, 100, bos);

您正在做两件事:压缩位图并将结果数据(构建 jpg 的字节)发送到 bos 流,将结果数据发送到输出流连接。

您也可以直接将数据写入连接的输出流,替换为:

ByteArrayOutputStream bos = new ByteArrayOutputStream(outputStream);
bitmap.compress(CompressFormat.JPEG, 100, bos);

有了这个:

bitmap.compress(CompressFormat.JPEG, 100, outputStream);

我希望这能帮助您了解 HttpUrlConnection 的工作原理。

此外,您不应该完全加载整个位图以避免“内存不足”异常,例如使用流打开位图。

关于android - 使用 httpurlconnection 和 android 上传图像字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546753/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com