1

我正在使用 multipart 将图像和视频上传到 php 服务器。当用户按下像whatsapp这样的按钮时,我希望能够取消上传。

进度显示正确,但我只想取消点击上传,但我不知道如何。

这是我当前的源代码:

private String uploadFile() {
    String responseString = null;
    int count;

       HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost(serviceurl+"conversations.php");

    try {
        MultipartEntityBuilder entity = MultipartEntityBuilder.create();        


        File sourceFile = new File(imgstring);
        /* example for setting a HttpMultipartMode */
        entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);

        if(Integer.parseInt(msgtype)==3)
        {

            entity.addPart("thumb", new FileBody(videothumb));
        }



        // Progress listener - updates task's progress

        MyHttpEntity.ProgressListener progressListener =
                new MyHttpEntity.ProgressListener() {
                    @Override
                    public void transferred(float progress) {
                       publishProgress((int) progress);
                       probar.setProgress((int) progress);


                    }
                };

        // Adding file data to http body
        entity.addPart("file", new FileBody(sourceFile));

        // Extra parameters if you want to pass to server
                entity.addTextBody("from_user",(prefid.getString("userid", null)),ContentType.TEXT_PLAIN);
        entity.addTextBody("to_user",userid,ContentType.TEXT_PLAIN);
        entity.addTextBody("message_type", msgtype,ContentType.TEXT_PLAIN); 

        httppost.setEntity(new MyHttpEntity(entity.build(),
                progressListener));

        // Making server call
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity r_entity = response.getEntity();

        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == 200) {

            responseString = EntityUtils.toString(r_entity);
        } else {
            responseString = "Error occurred! Http Status Code: "
                    + statusCode;
        }
        // input.close();   
    } catch (ClientProtocolException e) {
        responseString = e.toString();
    } catch (IOException e) {
        responseString = e.toString();
    }

    return responseString;

}
4

1 回答 1

1

调用asynTask的cancel方法取消上传/下载的执行。

于 2015-07-09T11:36:04.540 回答