-1

Here is my java code:

public class SimpleIntentService extends AsyncTask<String, Void, String> {
String upload;


public String uploadFiles(String sourceFileUri) {
    upload=sourceFileUri;
    return upload;

}



@Override
protected String doInBackground(String... params) {

    try {
        String sourceFileUri = upload;
        int serverResponseCode;
        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()) {

            try {
                String upLoadServerUri = "http://raymartsison.x10host.com/uploadToServer.php";

                // 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("bill", sourceFileUri);

                dos = new DataOutputStream(conn.getOutputStream());

                dos.writeBytes(twoHyphens + boundary + lineEnd);
                dos.writeBytes("Content-Disposition: form-data; name=\"bill\";filename=\""
                        + sourceFileUri + "\"" + 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();

                if (serverResponseCode == 200) {

                    // messageText.setText(msg);
                    //Toast.makeText(ctx, "File Upload Complete.",
                    //      Toast.LENGTH_SHORT).show();

                    // recursiveDelete(mDirectory1);

                }

                // close the streams //
                fileInputStream.close();
                dos.flush();
                dos.close();

            } catch (Exception e) {

                // dialog.dismiss();
                e.printStackTrace();

            }
            // dialog.dismiss();

        } // End else block


    } catch (Exception ex) {
        // dialog.dismiss();

        ex.printStackTrace();
    }
    return "Executed";
}

@Override
protected void onPostExecute(String result) {

}

@Override
protected void onPreExecute() {
}

@Override
protected void onProgressUpdate(Void... values) {
}

And i keep getting this error:

11-30 01:43:08.613 19483-19870/com.practice.raymart.practiceapplication 
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual 
method 'char[] java.lang.String.toCharArray()' on a null object reference

Please can someone help me, im a newbie to java and programming and i have tried googling and the error still shows. I am getting exception at this line:

File sourceFile = new File(sourceFileUri);

And it seems that it is not getting the path correctly thats why i keep getting this exception. Any help will be very much appreciated. Thanks!

1 Answers1

0

As the error says, you are invoking a method on a null object. In your case, the null object is probably "sourceFileUri" inside File constructor. You put this string equals to "upload" but you never initialize this class attribuite and the method uploadFiles is never called. Try to initialize "upload" with the file path or call the method.

Timon
  • 76
  • 7