首页 > 解决方案 > 如何在 Android 中使用多部分实体将图像与数据一起发布

问题描述

我正在使用带数据的 MultipartEntity 上传图像,但我无法发布。我必须与图像一起发布一些细节。我不知道问题出在哪里,并且在发布它不起作用时也调试我的代码。我不知道如何解决这个问题。

File file1 = new File(selectedPath1);
    String urlString = "url";
    try
    {
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(urlString);
        FileBody bin1 = new FileBody(file1);
        MultipartEntity reqEntity = new MultipartEntity();
        reqEntity.addPart("uploadedfile", bin1);
        reqEntity.addPart("Firstname", new StringBody("Firstname"));
        reqEntity.addPart("Mobilenumber", new StringBody("Mobilenumber"));
        post.setEntity(reqEntity);
        HttpResponse response = client.execute(post);
        resEntity = response.getEntity();
        final String response_str = EntityUtils.toString(resEntity);
        if (resEntity != null) {
            Log.i("RESPONSE",response_str);
            runOnUiThread(new Runnable(){
                public void run() {
                    try {
                        res.setTextColor(Color.GREEN);
                        res.setText("n Response from server : n " + response_str);
                        Toast.makeText(getApplicationContext(),"Upload Complete. Check the server uploads directory.", Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
    catch (Exception ex){
        Log.e("Debug", "error: " + ex.getMessage(), ex);
    }

标签: javaandroid-studio

解决方案


经过长时间的研究,我能够将带有数据的图像发布到服务器。我按照下面的链接并根据我的要求进行修改。我认为这对任何人都有帮助。捕获图片非常有用,而且我可以使用此链接发布带有数据的图像

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(urlString);


        try {
            CustomMultiPartEntity entity=new CustomMultiPartEntity(new CustomMultiPartEntity.ProgressListener() {

                @Override
                public void transferred(long num) {
                    publishProgress((int) ((num / (float) totalSize) * 100));
                }
            });

            entity.addPart("FirstName", new StringBody(Person.getFirstName()));
            entity.addPart("LastName", new StringBody(Person.getLastName()));
            entity.addPart("Email", new StringBody(Person.getEmail()));
            entity.addPart("Password", new StringBody(Person.getPassword()));
            entity.addPart("Mobilenumber", new StringBody(Person.getMobilenumber()));
            entity.addPart("uploadedfile", new FileBody(sourceFile));
            totalSize = entity.getContentLength();
            httppost.setEntity(entity);
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity r_entity = response.getEntity();
            responseString = EntityUtils.toString(r_entity);

        } catch (ClientProtocolException e) {
            responseString = e.toString();
        } catch (IOException e) {
            responseString = e.toString();
        }

推荐阅读