Http POST如何使用multipart / form-data发送带有文件的JSON

时间:2017-10-18 17:41:14

标签: android json post

我无法弄清楚如何使用multipart / form-data发送带有图像的JSON对象。

 exports.myThing = somethingFromMyFile;

我尝试将base64字符串放入徽标字段,然后只传递这个json对象,但这种方法不起作用,服务器需要内容类型:multipart / form-data;我无法知道如何做到这一点。我查看了很多问题,但没有找到如何使用文件和文件发布JSON。

2 个答案:

答案 0 :(得分:0)

这是我用来向后端发送POST的通用方法:

/**
 * toBase64
 *
 * @param bitmap
 * @return String
 */
public static String toBase64 (Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    return encodedImage;
}

/**
 * fromBase64
 *
 * @param encodedImage
 * @return Bitmap
 */
public static Bitmap fromBase64 (String encodedImage) {
    byte[] decodedByte = Base64.decode(encodedImage, Base64.DEFAULT);
    return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
}

发送的JSON以'msg'

的形式发送

并且为了将图片编码为字符串,这是我的代码:

function escapeRegEx(s) {
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}

var expression = new RegExp('\\\\"mediaType\\\\":\\\\"' + escapeRegEx(variable) + '\\\\"');
// or, using a template literal:
var expression = new RegExp(`\\\\"mediaType\\\\":\\\\"${escapeRegEx(variable)}\\\\"`);

希望它对你有所帮助。

答案 1 :(得分:0)

首先你应该改变方法。在您向任何地方发送JSON对象之前,您必须将图像(文件)加载到上载服务器。上传服务器它是一个服务器,您可以在其中存储您的图像,并可以通过引用访问它。 它看起来像这样:使用multipart / form-data将图像上传到服务器并获取图像链接。然后将此链接放入您的JSON对象,如

{  
   id: 123,  
   user: { logo: https://myuploadserver.com/img123.jpg }
}

然后你可以随心所欲地使用JSON对象

指向stackoverflow的一些链接,其中包含如何使用multipart / form-data将数据上传到上传服务器的说明:

1。simple HttpURLConnection POST file multipart/form-data
2。upload multipart form data to server