简体   繁体   English

带有json对象的android分段图像上传

[英]android multipart image upload with json object

I want to upload images to server. 我想将图像上传到服务器。

Here is the code, 这是代码,

  try {

        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(Constants.yigit);
        Charset chars = Charset.forName("UTF-8"); // Setting up the encoding

        MultipartEntity reqEntity = new MultipartEntity();
        StringBody jsonBody = new StringBody(getNewDemandRequestParams(), "application/json",null);
        FormBodyPart jsonBodyPart = new FormBodyPart("data", jsonBody);
        reqEntity.addPart(jsonBodyPart);

      if (getMainActivity().getImagesSavedData(0).size() > 0) {
            for (int i = 0; i < getMainActivity().getImagesSavedData(0).size(); i++) {
  File _file = new File(getMainActivity().getImagesSavedData(0).get(i).getFilePath());               
                FileBody _fileBody = new FileBody(_file, "image/jpg", "UTF-8");
 FormBodyPart fileBodyPart = new FormBodyPart(getMainActivity().getImagesSavedData(0).get(i).getImageName().replace(".jpg", ""), _fileBody);

                reqEntity.addPart(fileBodyPart);

                reqEntity.addPart(getMainActivity().getImagesSavedData(0).get(i).getImageName().replace(".jpg",""), _fileBody);



          }
        }

        post.setEntity(reqEntity);
        String result = EntityUtils.toString(reqEntity);
        Log.e("rsul", result);
        HttpResponse response = client.execute(post);
        resEntity = response.getEntity();

        final String response_str = EntityUtils.toString(resEntity);

}

But the problem is jsonBodyPart is including slashes. 但是问题是jsonBodyPart包含斜杠。

Request body like this: 请求这样的正文:

{"data"=>"{\\"action\\":\\"YENITALEP\\",\\"app\\":{\\"version\\":\\"verisyon\\"},\\"data\\":{\\"invoices\\":[{\\"imageName\\":\\"1395914025134\\",\\"note\\":\\"\\",\\"type\\":\\"FATURA\\",\\"typeNo\\":\\"0\\"}],\\"note\\":\\"\\",\\"notification\\":[{\\"type\\":\\"BeniAray?n\\",\\"typeNo\\":\\"0\\"}]},\\"device\\":{\\"hardwareModel\\":\\"m7\\",\\"model\\":\\"HTC One\\",\\"systemVersion\\":\\"4.4.2\\",\\"uid\\":\\"00000000-7f39-faab-b500-7f280e9b4fed\\"},\\"timestamp\\":\\"Date(1391073711000+0200)\\"}", "1395914025134"=>#, @original_filename="1395914025134.jpg", @content_type="image/jpg; charset=UTF-8", @headers="Content-Disposition: form-data; name=\\"1395914025134\\"; filename=\\"1395914025134.jpg\\"\\r\\nContent-Type: image/jpg; charset=UTF-8\\r\\nContent-Transfer-Encoding: binary\\r\\n">} {“ data” =>“ {\\” action \\“:\\” YENITALEP \\“,\\” app \\“:{\\” version \\“:\\” verisyon \\“},\\” data \\“:{\\”发票\\“:[{\\” imageName \\“:\\” 1395914025134 \\“,\\” note \\“:\\” \\“,\\” type \\“:\\” FATURA \\“,\\” typeNo \\“:\\” 0 \\ “}],\\” note \\“:\\” \\“,\\” notification \\“:[{\\” type \\“:\\” BeniAray?n \\“,\\” typeNo \\“:\\” 0 \\“}] },\\“ device \\”:{\\“ hardwareModel \\”:\\“ m7 \\”,\\“ model \\”:\\“ HTC One \\”,\\“ systemVersion \\”:\\“ 4.4.2 \\”,\\“ uid \\“:\\” 00000000-7f39-faab-b500-7f280e9b4fed \\“},\\” timestamp \\“:\\” Date(1391073711000 + 0200)\\“}”,“ 1395914025134” =>#,@ original_filename =“ 1395914025134 .jpg“,@ content_type =” image / jpg; charset = UTF-8“,@ headers =” Content-Disposition:form-data; name = \\“ 1395914025134 \\”; filename = \\“ 1395914025134.jpg \\” \\ r \\ n内容类型:图片/ jpg;字符集= UTF-8 \\ r \\ n内容传输编码:二进制\\ r \\ n“>}

How can I post a complex json object and images using multipart? 如何使用multipart发布复杂的json对象和图像? Thanks for help 感谢帮助

check once this code iam using this one for uploading images to server 请检查一次此代码是否使用此代码将图像上传到服务器

HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(urls[0]);
MultipartEntity multipartContent = new MultipartEntity();
for(int i=0;i<allimagespath.size();i++){
Bitmap bm = ShrinkBitmap(allimagespath.get(i), 140, 140);
String format = allimagespath.get(i).substring((allimagespath.get(i).lastIndexOf(".")+1) ,  allimagespath.get(i).length());
Bitmap bit=Bitmap.createScaledBitmap(bm, 140, 140, true);
ByteArrayOutputStream blob = new ByteArrayOutputStream();
 if(format.equalsIgnoreCase("png")){
    bit.compress(CompressFormat.PNG, 100 , blob);
 }else{
    bit.compress(CompressFormat.JPEG, 100 , blob);
 }
bitmapdata = blob.toByteArray();
ByteArrayBody thumbbmp = new ByteArrayBody(bitmapdata, "thumb."+format);
FileBody bin2 = new FileBody(new File(allimagespath.get(i)));               
multipartContent.addPart("uploaded_file["+i+"]", bin2);
multipartContent.addPart("uploaded_thumb["+i+"]", thumbbmp);
}
multipartContent.addPart("count", new StringBody(""+allimagespath.size()));
postRequest.setEntity(multipartContent);
HttpResponse response = httpClient.execute(postRequest);
HttpEntity entity = response.getEntity();
is = entity.getContent(); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM