title: progress bar with uploading a file to an asp.net server
body: <p>I made a program which uploads a video to an asp.net server. Then I want to develop my application by adding a progress bar. However, after adding the progress bar I am not able to upload the file to the server.( this is the result that I get after debugging!!!) Could you please help me what is wrong with my code? </p>
  
  <pre><code>package com.isoft.uploader2;
  
  import java.io.DataOutputStream;
  import java.io.File;
  import java.io.FileInputStream;
  import java.net.HttpURLConnection;
  import java.net.URL;
  import android.app.Activity;
  import android.app.ProgressDialog;
  import android.content.Intent;
  import android.database.Cursor;
  import android.net.Uri;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.provider.MediaStore;
  import android.util.Log;
  import android.view.View;
  import android.widget.Button;
  
  public class Proje2Activity extends Activity
  {
   @Override
      public void onCreate(Bundle savedInstanceState) 
      {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          Button button =(Button)findViewById(R.id.button1);
          button.setOnClickListener(new View.OnClickListener() {
  
              @Override
              public void onClick(View arg0) {
                  // TODO Auto-generated method stub
                  openGaleryVideo();
              }
          });
  
      }
  /** Called when the activity is first created. */
  public static final int SELECT_VIDEO=1;
  public static final String TAG="UploadActivity";
  String path="";
  
  //Gallery'i aç
  public void openGaleryVideo()
  {
      Intent intent=new Intent();
      intent.setType("video/*");
      intent.setAction(Intent.ACTION_GET_CONTENT);
      startActivityForResult(Intent.createChooser(intent, "Select Video"),SELECT_VIDEO);
  }
  
  //Dosyayı seç ve yükle
  public void onActivityResult(int requestCode, int resultCode, Intent data) 
  {
      super.onActivityResult(requestCode, resultCode, data);
      if (resultCode == RESULT_OK)
      {
          if (requestCode == SELECT_VIDEO) 
          {
              Uri videoUri = data.getData();
              path= getPath(videoUri);
              upload a = new upload();
              a.onPreExecute();
              a.doInBackground();
              a.onProgressUpdate();
  
  
          }
      }
  }
  
  //SD carddan yerini al
  public String getPath(Uri uri)
  {   
      String[] projection = { MediaStore.Video.Media.DATA};
      Cursor cursor = managedQuery(uri, projection, null, null, null);
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
      cursor.moveToFirst();
      return cursor.getString(column_index);
  }
  public class upload extends AsyncTask&lt;Object, Integer, Void&gt; 
  {
       public ProgressDialog dialog;
       File file=new File(path);  
       String urlServer = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
       String filename=file.getName();
       int bytesRead, bytesAvailable, bufferSize;
       byte[] buffer;
       int maxBufferSize = 20*1024*1024;
      @Override
      public void onPreExecute() 
      {
           dialog = new ProgressDialog(Proje2Activity.this);
           dialog.setMessage("Uploading...");
           dialog.setIndeterminate(false);
           dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
           dialog.setProgress(0);
           dialog.show();
              //Burada işlemi yapmadan önce ilk olarak ne yaptırmak istiyorsak burada yaparız.
              //Örneğin burada dialog gösterip "onPostExecute()" metodunda dismiss edebiliriz.
      }
  
      @Override
      public Void doInBackground(Object... arg0) 
      {
          // TODO Auto-generated method stub
          try
          {
          FileInputStream fileInputStream = new FileInputStream(file);
  
          URL url = new URL(urlServer);
          HttpURLConnection connection = (HttpURLConnection) url.openConnection();
          connection.setFixedLengthStreamingMode((int) file.length());
  
          // Allow Inputs &amp; Outputs
          connection.setDoInput(true);
          connection.setDoOutput(true);
          connection.setUseCaches(false);
  
          // Enable POST method
          connection.setRequestMethod("POST");
          connection.setRequestProperty("Connection", "Keep-Alive");
          connection.setRequestProperty("Content-Type",  "multipart/form-data");
          connection.setRequestProperty("SD-FileName", filename);//This will be the file name
          DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
          bytesAvailable = fileInputStream.available();
          bufferSize = Math.min(bytesAvailable, maxBufferSize);
          buffer = new byte[bufferSize];
  
          // Read file
          bytesRead = fileInputStream.read(buffer, 0, bufferSize);
          while (bytesRead &gt; 0)
          {   
              outputStream.write(buffer, 0, bufferSize);
              bytesAvailable = fileInputStream.available();
              publishProgress();
              bufferSize = Math.min(bytesAvailable, maxBufferSize);
              bytesRead = fileInputStream.read(buffer, 0, bufferSize);
          }//end of while statement
          fileInputStream.close();
          publishProgress(100); 
          outputStream.flush();
          outputStream.close();
          }//end of try body
          catch (Exception ex)
          {
              //ex.printStackTrace();
              Log.e("Error: ", ex.getMessage());
          }
          return null;
       }//end of doInBackground method
       @Override
       public void onProgressUpdate(Integer... values) 
       {
         // TODO Auto-generated method stub
         dialog.setProgress((int) ((file.length()-bytesRead)/100));
       }//end of onProgressUpdate method
  }// end of asyncTask class 
  }//end of main
  </code></pre>