Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用multipart上传图像时如何在客户端获取进程_Java_Android_Apache_File Upload - Fatal编程技术网

Java 使用multipart上传图像时如何在客户端获取进程

Java 使用multipart上传图像时如何在客户端获取进程,java,android,apache,file-upload,Java,Android,Apache,File Upload,我正在做一个项目,需要上传图像使用多部分。 这是我的密码: public void doUploadGIF(File image) { try { long start = System.currentTimeMillis(); HttpPost httppost = new HttpPost( "myurl"); MultipartEntity multipartE

我正在做一个项目,需要上传图像使用多部分。 这是我的密码:

public void doUploadGIF(File image) {

        try {
            long start = System.currentTimeMillis();
            HttpPost httppost = new HttpPost(
                    "myurl");
            MultipartEntity multipartEntity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            multipartEntity.addPart("gif", new FileBody(image));
            httppost.setEntity(multipartEntity);

            mHttpClient.execute(httppost, new PhotoUploadResponseHandler());

            long end = System.currentTimeMillis();
            System.out.println("Time for uploading:"
                    + String.valueOf(end - start));
        } catch (Exception e) {
            Log.e("Upload", "Error while uploading");
        }
    }

private class PhotoUploadResponseHandler implements ResponseHandler<Object> {

        @Override
        public Object handleResponse(HttpResponse response)
                throws ClientProtocolException, IOException {

            HttpEntity r_entity = response.getEntity();
            String responseString = EntityUtils.toString(r_entity); 
            Log.d("UPLOAD", responseString);

            return null;
        }

    }
现在在客户端Android中,我让用户知道上传百分比的过程。 我该怎么做?
谢谢你的关注

在我的例子中,我使用了以KB为单位的文件大小,并以KB为单位设置了progressbar的限制。为了更新我使用的progressbar:


使用Asynctask,在onProgressUpdate中,您可以更新进度条或在上载过程中要更新的任何内容。我知道,但问题是我如何知道文件上载的百分比?我认为这里有点混乱。我的文件长度是2MB。如何知道服务器在特定时间内接收的长度?
int bufferLength = 1024;

File file = new File(ImgURI);
mFileLen =  file.length();

int maxBufferSize = 1*1024*1024;

bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);

for (int i = 0; i < bufferSize; i +=bufferLength) {
    progress = i/1024;
    progressBar1.setMax(kbfilesize);
    publishProgress(progress);
}