Java Android-将位图转换为包含在多部分请求中的字符串

Java Android-将位图转换为包含在多部分请求中的字符串,java,android,http,bitmap,multipart,Java,Android,Http,Bitmap,Multipart,我试图将位图转换为可以包含在我的多部分HTTP请求中的字符串,我必须手动构造请求体,我的问题是,当我将位图转换为字节数组,然后从字节数组转换为字符串时,我似乎失去了文件结构的完整性。如何将位图转换为字符串而不损坏文件结构 Bitmap imageBitmap = BitmapFactory.decodeFile(data.getData()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); imageBitmap.compre

我试图将位图转换为可以包含在我的多部分HTTP请求中的字符串,我必须手动构造请求体,我的问题是,当我将位图转换为字节数组,然后从字节数组转换为字符串时,我似乎失去了文件结构的完整性。如何将位图转换为字符串而不损坏文件结构

Bitmap imageBitmap = BitmapFactory.decodeFile(data.getData());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
String s = new String(baos.toByteArray());

可以使用Base64将位图转换为字符串 试试这个

public String convertBitmapToString(final Bitmap pBitmap){
    final ByteArrayOutputStream byteArrayOutputStream = new  ByteArrayOutputStream();
    pBitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
    final byte [] bytes = byteArrayOutputStream.toByteArray();
    final String string = Base64.encodeToString(bytes, Base64.DEFAULT); 
    return string;
}
或者,如果无法使用base64,请尝试以下方法

 try {
     String s = new String(baos.toByteArray(), "UTF-8");
 } catch (UnsupportedEncodingException e) {
     e.printStackTrace();
 }

问题是web服务希望输入为字节结构,我尝试了base64,但服务没有对其进行解码。我无法控制服务,因此我必须自己解决这个问题。
我似乎失去了文件结构的完整性。
?档案?你说的是位图。特别是当您使用多部分上传时,请不要使用base64编码。只需按原样发送文件。在我的例子中,它是一个位图,但我假设上载的文件或位图应该是相同的。有关于如何按原样发送文件的示例吗?
data.getData()
。那是什么?文件名?它是资源的URI,文件的路径。因此,您需要上载文件。你为什么说你想上传位图呢?