1

I've been trying to upload an image file from android to my php server, but the $_FILES array in php is always empty. To test if it was a server or client issue I made a quick web-form that submitted the same data as the android app, which worked, making me think that there's a problem with the android code.

My php code is:

//check for uploaded files
var_dump($_POST);
var_dump($_FILES);

$target_path  = "./images/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
 echo "The file ".  basename( $_FILES['uploadedfile']['name']).
 " has been uploaded";
} else{
 echo "There was an error uploading the file, please try again!";
}

and the android part:

public void uploadFile(){

        File file = new File("/storage/sdcard0/Android/data/xxx/files/Pictures/JPEG20131005.jpg");


        RequestParams params = new RequestParams();
        try {
            params.put("uploadedfile", file);
        } catch(FileNotFoundException e) {
             Log.e("testcase", "file not found");
        }


        AsyncHttpClient client = new AsyncHttpClient();
        client.post("http://www.example.com/fileUploader.php", params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(String response) {
                System.out.println(response);
            }
        });

}

I just get back

array(0){
}

for both var_dump($_POST); and var_dump($_FILES);

This is my form code which works:

<form action="fileUploader.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="uploadedfile" id="uploadedfile"><br>
<input type="submit" name="submit" value="Submit">
</form>

I've also tried this example and a few others which all seem to share similar code but I got the same result so I've settled with using loopJ, purely because it's a tried and tested library.

1
  • see my answer here Commented May 23, 2016 at 9:21

1 Answer 1

1

Ok, so it turns out the url i was sending the data to started with a www. and the server was giving a 302 redirect to the same domain, without the www. This was in turn removing all the data for some reason. So after a few days of hair pulling, it was just 4 simple backspaces....

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.