Mega Code Archive

 
Categories / Android / Core Class
 

Extends IntentService to upload a file

//package backend.snippets; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import android.app.IntentService; import android.app.NotificationManager; import android.content.Intent; import android.util.Log; import android.widget.Toast; /**  * @author Maurya Talisetti  */ public class BackgroundService extends IntentService {   private NotificationManager nm;   private final Calendar time = Calendar.getInstance();   private String fName;   private String lName;   private String phoneNumber;   private String latitude;   private String longitude;   private String selectedImagePath;   public BackgroundService() {     super("");   }   @Override   protected void onHandleIntent(Intent intent) {     // TODO Auto-generated method stub     fName = intent.getExtras().getString("fname");     lName = intent.getExtras().getString("lname");     phoneNumber = intent.getExtras().getString("phone_no");     latitude = intent.getExtras().getString("latitude");     longitude = intent.getExtras().getString("longitude");     selectedImagePath = intent.getExtras().getString("selectedImagePath");     doFileUpload();   }   @Override   public void onCreate() {     super.onCreate();     nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);     Toast.makeText(this, "Service created at " + time.getTime(),         Toast.LENGTH_LONG).show();     // showNotification();   }   @Override   public void onDestroy() {     super.onDestroy();     // Cancel the persistent notification.     // nm.cancel(R.string.service_started);     Toast.makeText(this,         fName + " Service destroyed at " + time.getTime() + ";",         Toast.LENGTH_LONG).show();   }   public int doFileUpload() {     int serverResponseCode = 0;     String upLoadServerUri = "http://50.56.69.127/vas/trunk/fileupload.php";     Date d = new Date();     d.getTime();     Log.i("FileUpload", "FileUpload: Time : " + d.getTime());     upLoadServerUri = upLoadServerUri + "?fname=" + fName.toString();     upLoadServerUri = upLoadServerUri + "&lname=" + lName.toString();     upLoadServerUri = upLoadServerUri + "&phone_no="         + phoneNumber.toString();     upLoadServerUri = upLoadServerUri + "&latitude=" + latitude.toString();     upLoadServerUri = upLoadServerUri + "&longitude="         + longitude.toString();     String currentTimeString = new SimpleDateFormat("yyyy-MM-dd")         .format(new Date());     String currentTimeString2 = new SimpleDateFormat("HH:mm:ss")         .format(new Date());     // Log.i("FileUpload", "FileUpload: Time : " + currentTimeString);     upLoadServerUri = upLoadServerUri + "&dtime=" + currentTimeString + ""         + currentTimeString2;     // String [] string = sourceFileUri;     // zip();     // String fileName = _zipFile;     String fileName = selectedImagePath;     // String fileName2 = audioImagePath;     // Log.i("FileUpload", "FileUpload: Image : " + selectedImagePath);     // Log.i("FileUpload", "FileUpload: Audio : " + audioImagePath);     HttpURLConnection conn = null;     DataOutputStream dos = null;     DataInputStream inStream = null;     String lineEnd = "\r\n";     String twoHyphens = "--";     String boundary = "*****";     int bytesRead, bytesAvailable, bufferSize;     byte[] buffer;     int maxBufferSize = 1 * 1024 * 1024;     String responseFromServer = "";     File sourceFile = new File(fileName);     if (!sourceFile.isFile()) {       Log.e("FileUpload", "FileUpload:Source File Does not exist");       return 0;     }     try { // open a URL connection to the Servlet       FileInputStream fileInputStream = new FileInputStream(sourceFile);       URL url = new URL(upLoadServerUri);       conn = (HttpURLConnection) url.openConnection(); // Open a HTTP                                 // connection to                                 // the URL       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=\"uploaded_file\";filename=\""           + fileName + "\"" + lineEnd);       dos.writeBytes(lineEnd);       bytesAvailable = fileInputStream.available(); // create a buffer of                               // maximum size       Log.i("FileUpload", "FileUpload: Initial .available : "           + bytesAvailable);       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("Upload file to server", "HTTP Response is : "           + serverResponseMessage + ": " + serverResponseCode);       // close streams       Log.i("Upload file to server", fileName + " File is written");       fileInputStream.close();       dos.flush();       dos.close();     } catch (MalformedURLException ex) {       ex.printStackTrace();       Log.e("Upload file to server", "error: " + ex.getMessage(), ex);     } catch (Exception e) {       e.printStackTrace();     }     // this block will give the response of upload link     try {       BufferedReader rd = new BufferedReader(new InputStreamReader(           conn.getInputStream()));       String line;       while ((line = rd.readLine()) != null) {         Log.i("FileUpload", "FileUpload:RES Message: " + line);       }       rd.close();     } catch (IOException ioex) {       Log.e("FileUpload", "error: " + ioex.getMessage(), ioex);     }     // File fileDel = new File(_zipFile);     // boolean deleted = fileDel.delete();     // Log.e("FileUpload", "FileUpload:Delete - "+deleted);     // Function call for notification message..     return serverResponseCode; // like 200 (Ok)   } // end upLoad2Server }