派多用图像和凌空水平进度条

问题描述 投票:0回答:1

我想通过使用图像抽射多,也想展示图片上传过程中的进度对话框上传。

我用this code for show progress dialog当图像被上载,也check this code for this.

并使用下面的代码上传。

public void doFileUpload(ArrayList<MyUploadImage> images){
        try {
            //MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
            //entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

            JSONObject jo = new JSONObject();
            jo.put("NoOfImages", images.size());

            HttpClient client = new DefaultHttpClient();
            HttpPost post = new HttpPost(link);

            CustomMultiPartEntity multipartContent = new CustomMultiPartEntity(new ProgressListener()
            {
                @Override
                public void transferred(long num)
                {
                    pd.setProgress((int) ((num / (float) totalSize) * 100));
                }
            });

            //MultipartEntity reqEntity = new MultipartEntity();
            int size = images.size();
            for(int i = 0; i < size; i++){
                FileBody bin1 = new FileBody(images.get(i).getImageFile());

                multipartContent.addPart(("uploaded_file"+i), bin1);
            }

            multipartContent.addPart("girish", new StringBody(jo.toString()));
            totalSize = multipartContent.getContentLength();

            post.setEntity(multipartContent);
            HttpResponse response = client.execute(post);

            HttpEntity resEntity = response.getEntity();

            final String response_str = EntityUtils.toString(resEntity);

            Log.e("Response", response_str);

            pd.dismiss();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            pd.dismiss();
        } catch (Exception e) {
            e.printStackTrace();
            pd.dismiss();
        }

    }

谢谢

android file-upload android-progressbar multipart android-volley
1个回答
0
投票

凌空犯规多部分提供支持。但你仍然可以使用凌空的框架,并提供你自己的实现HttpStack的,就像我们用于SSL连接。

public class MultiPartRequest extends JsonRequest<JSONObject> {

    /* To hold the parameter name and the File to upload */
    private Map<String,File> fileUploads = new HashMap<String,File>();

    /* To hold the parameter name and the string content to upload */
    private Map<String,String> stringUploads = new HashMap<String,String>();

    public void addFileUpload(String param,File file) {
        fileUploads.put(param,file);
    }

    public void addStringUpload(String param,String content) {
        stringUploads.put(param,content);
    }

    public Map<String,File> getFileUploads() {
        return fileUploads;
    }

    public Map<String,String> getStringUploads() {
        return stringUploads;
    }
}

而在你HttpStack实施,创建MultiPartEntity并将其设置为HttpRequest的。请参阅有关详细信息,SslHttpStack createHttpRequest方法。

private static void setMultiPartBody(HttpEntityEnclosingRequestBase httpRequest, Request<?> request) throws AuthFailureError {

    // Return if Request is not MultiPartRequest
    if(request instanceof MultiPartRequest == false) {
        return;
    }

    MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
    //Iterate the fileUploads
    Map<String,File> fileUpload = ((MultiPartRequest)request).getFileUploads();

    for (Map.Entry<String, File> entry : fileUpload.entrySet()) {
        multipartEntity.addPart(((String)entry.getKey()), new FileBody((File)entry.getValue()));
    }

    //Iterate the stringUploads
    Map<String,String> stringUpload = ((MultiPartRequest)request).getStringUploads();

    for (Map.Entry<String, String> entry : stringUpload.entrySet()) {
        try {
            multipartEntity.addPart(((String)entry.getKey()), new StringBody((String)entry.getValue()));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    httpRequest.setEntity(multipartEntity);
}

在这里看到这soluction:https://github.com/smanikandan14/Volley-demo

© www.soinside.com 2019 - 2024. All rights reserved.