Click here to Skip to main content
15,886,199 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I want to automatically upload files to server after every captured, I zip them them, now I want to to send them to the sever. I used a on-click for user to click a button before they can upload it worked well, now I want to eliminate the on-click of a button to send to sever.

My code

Java
TextView messageText;
   Button uploadButton;
   int serverResponseCode = 0;
   ProgressDialog dialog = null;
       
   String upLoadServerUri = null;
    
   //**********  File Path *************//
   final String uploadFilePath = "/mnt/sdcard/";
   final String uploadFileName = "my files";
    
   @Override
   public void onCreate(Bundle savedInstanceState) {
        
     /*  super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_upload_to_server);
         */
       uploadButton = (Button)findViewById(R.id.uploadButton);
       messageText  = (TextView)findViewById(R.id.messageText);
        
       messageText.setText("Uploading file path :- '/mnt/sdcard/"+uploadFileName+"'");
        
       //************* Php script path ****************//*
       upLoadServerUri = "to here m uploading";
       //************* Php script path ****************//*
        
       uploadButton.setOnClickListener(new OnClickListener() {            
           @Override
           public void onClick(View v) {
                
               dialog = ProgressDialog.show(UploadService.this, "", "Uploading file...", true);
                
               new Thread(new Runnable() {
                       public void run() {
                            runOnUiThread(new Runnable() {
                                   public void run() {
                                       messageText.setText("uploading started.....");
                                   }
                               });                      
                          
                            uploadFile(uploadFilePath + "" + uploadFileName);
                                                     
                       }
                     }).start();        
               }
           });
   }
     
   public int uploadFile(String sourceFileUri) {
          
          
         String fileName = sourceFileUri;
 
         HttpURLConnection conn = null;
         DataOutputStream dos = null;  
         String lineEnd = "\r\n";
         String twoHyphens = "--";
         String boundary = "*****";
         int bytesRead, bytesAvailable, bufferSize;
         byte[] buffer;
         int maxBufferSize = 1 * 1024 * 1024; 
         File sourceFile = new File(sourceFileUri); 
          
         if (!sourceFile.isFile()) {
              
              dialog.dismiss(); 
               
              Log.e("uploadFile", "Source File not exist :"
                                  +uploadFilePath + "" + uploadFileName);
               
              runOnUiThread(new Runnable() {
                  public void run() {
                      messageText.setText("Source File not exist :"
                              +uploadFilePath + "" + uploadFileName);
                  }
              }); 
               
              return 0;
           
         }
         else
         {
              try { 
                   
                    // open a URL connection to the Servlet
                  FileInputStream fileInputStream = new FileInputStream(sourceFile);
                  URL url = new URL(upLoadServerUri);
                   
                  // Open a HTTP  connection to  the URL
                  conn = (HttpURLConnection) url.openConnection(); 
                  conn.setDoInput(true); // Allow Inputs
                  conn.setDoOutput(true); // Allow Outputs
                  conn.setUseCaches(false); // Don't use a Cached Copy
                  conn.setRequestMethod("POST");
                  conn.setRequestProperty("Connection", "Keep-Alive");
                  conn.setRequestProperty("ENCTYPE", "multipart/form-data");
                  conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
                  conn.setRequestProperty("uploaded_file", fileName); 
                   
                  dos = new DataOutputStream(conn.getOutputStream());
         
                  dos.writeBytes(twoHyphens + boundary + lineEnd); 
                  dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + fileName +"\"" + lineEnd);
                  dos.writeBytes(lineEnd);
                   
                  dos.writeBytes(lineEnd);
         
                  // create a buffer of  maximum size
                  bytesAvailable = fileInputStream.available(); 
         
                  bufferSize = Math.min(bytesAvailable, maxBufferSize);
                  buffer = new byte[bufferSize];
         
                  // read file and write it into form...
                  bytesRead = fileInputStream.read(buffer, 0, bufferSize);  
                     
                  while (bytesRead > 0) {
                       
                    dos.write(buffer, 0, bufferSize);
                    bytesAvailable = fileInputStream.available();
                    bufferSize = Math.min(bytesAvailable, maxBufferSize);
                    bytesRead = fileInputStream.read(buffer, 0, bufferSize);   
                     
                   }
         
                  // send multipart form data necesssary after file data...
                  dos.writeBytes(lineEnd);
                  dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
         
                  // Responses from the server (code and message)
                  serverResponseCode = conn.getResponseCode();
                  String serverResponseMessage = conn.getResponseMessage();
                    
                  Log.i("uploadFile", "HTTP Response is : "
                          + serverResponseMessage + ": " + serverResponseCode);
                   
                  if(serverResponseCode == 200){
                       
                      runOnUiThread(new Runnable() {
                           public void run() {
                                
                               String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
                                             +"my file was uploaded to this site"
                                             +uploadFileName;
                                
                               messageText.setText(msg);
                               Toast.makeText(UploadService.this, "File Upload Complete.", 
                                            Toast.LENGTH_SHORT).show();
                           }
                       });                
                  }    
                   
                  //close the streams //
                  fileInputStream.close();
                  dos.flush();
                  dos.close();
                    
             } catch (MalformedURLException ex) {
                  
                 dialog.dismiss();  
                 ex.printStackTrace();
                  
                 runOnUiThread(new Runnable() {
                     public void run() {
                         messageText.setText("MalformedURLException Exception : check script url.");
                         Toast.makeText(UploadService.this, "MalformedURLException", 
                                                             Toast.LENGTH_SHORT).show();
                     }
                 });
                  
                 Log.e("Upload file to server", "error: " + ex.getMessage(), ex);  
             } catch (Exception e) {
                  
                 dialog.dismiss();  
                 e.printStackTrace();
                  
                 runOnUiThread(new Runnable() {
                     public void run() {
                         messageText.setText("Got Exception : see logcat ");
                         Toast.makeText(UploadService.this, "Got Exception : see logcat ", 
                                 Toast.LENGTH_SHORT).show();
                     }
                 });
                 Log.e("Upload file to server Exception", "Exception : "
                                                  + e.getMessage(), e);  
             }
             dialog.dismiss();       
             return serverResponseCode; 
              
          } // End else block 
        } 
}


I m new to android, please help if you have suggestion I can make.
The user will be ask to send using both wifi and data.
Posted
Comments
Afzaal Ahmad Zeeshan 6-Jul-15 11:02am    
You need to use HttpClient.
Jay Star 17-Jul-15 8:06am    
HttpClient will help me do the automatic upload?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900