Question

here is my code

private Boolean doFileUpload() {
        HttpEntity resEntity;
        String urlString = "http://192.168.1.112/johnson/learn/android/index2.php";
        try {
            HttpClient client = new DefaultHttpClient();
            HttpPost post = new HttpPost(urlString);
            FileBody bin1 = new FileBody(file1);
            FileBody bin2 = new FileBody(file2);
            MultipartEntity reqEntity = new MultipartEntity();
            reqEntity.addPart("uploadedfile1", bin1);
            reqEntity.addPart("uploadedfile2", bin2);
            reqEntity.addPart("user", new StringBody("User"));
            post.setEntity(reqEntity);
            HttpResponse response = client.execute(post);
            resEntity = response.getEntity();
            final String response_str = EntityUtils.toString(resEntity);
            if (resEntity != null) {
                Log.i("RESPONSE", response_str);
                runOnUiThread(new Runnable() {
                    public void run() {
                        try {
                            showToast("Upload Complete. Check the server uploads directory.");
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        } catch (Exception ex) {
            Log.e("Debug", "error: " + ex.getMessage(), ex);
        }
        return true; 
    }

It works when I upload files around 2MB, but error when I upload 20+MB files Anyone know where the error? (Error = Data not uploaded, but stated uploaded)

It stated upload successful for both.

My Logcat

08-24 13:27:15.725: D/dalvikvm(4221): GC_CONCURRENT freed 324K, 5% free 9538K/9991K, paused 0ms+0ms
08-24 13:27:18.417: I/RESPONSE(4221): <br />
08-24 13:27:18.417: I/RESPONSE(4221): <b>Notice</b>:  Undefined index: uploadedfile1 in <b>C:\xampp\htdocs\Johnson\Learn\android\index2.php</b> on line <b>6</b><br />
08-24 13:27:18.417: I/RESPONSE(4221): <br />
08-24 13:27:18.417: I/RESPONSE(4221): <b>Notice</b>:  Undefined index: uploadedfile1 in <b>C:\xampp\htdocs\Johnson\Learn\android\index2.php</b> on line <b>7</b><br />
08-24 13:27:18.417: I/RESPONSE(4221): There was an error uploading the file, please try again!<br />
08-24 13:27:18.417: I/RESPONSE(4221): <b>Notice</b>:  Undefined index: uploadedfile1 in <b>C:\xampp\htdocs\Johnson\Learn\android\index2.php</b> on line <b>12</b><br />
08-24 13:27:18.417: I/RESPONSE(4221): filename: target_path: uploads/<br />
08-24 13:27:18.417: I/RESPONSE(4221): <b>Notice</b>:  Undefined index: uploadedfile2 in <b>C:\xampp\htdocs\Johnson\Learn\android\index2.php</b> on line <b>16</b><br />
08-24 13:27:18.417: I/RESPONSE(4221): <br />
08-24 13:27:18.417: I/RESPONSE(4221): <b>Notice</b>:  Undefined index: uploadedfile2 in <b>C:\xampp\htdocs\Johnson\Learn\android\index2.php</b> on line <b>17</b><br />
08-24 13:27:18.417: I/RESPONSE(4221): There was an error uploading the file, please try again!<br />
08-24 13:27:18.417: I/RESPONSE(4221): <b>Notice</b>:  Undefined index: uploadedfile2 in <b>C:\xampp\htdocs\Johnson\Learn\android\index2.php</b> on line <b>22</b><br />
08-24 13:27:18.417: I/RESPONSE(4221): filename: target_path2: uploads/<br />
08-24 13:27:18.417: I/RESPONSE(4221): <b>Notice</b>:  Undefined index: user in <b>C:\xampp\htdocs\Johnson\Learn\android\index2.php</b> on line <b>26</b><br />
08-24 13:27:18.417: I/RESPONSE(4221): n String Parameter send from client side : 

This is my PHP script

<?php
$target_path1 = "uploads/";
$target_path2 = "uploads/";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path1 = $target_path1 . basename( $_FILES['uploadedfile1']['name']);
if(move_uploaded_file($_FILES['uploadedfile1']['tmp_name'], $target_path1)) {
    echo "The first file ".  basename( $_FILES['uploadedfile1']['name']).
    " has been uploaded.";
} else{
    echo "There was an error uploading the file, please try again!";
    echo "filename: " .  basename( $_FILES['uploadedfile1']['name']);
    echo "target_path: " .$target_path1;
}

$target_path2 = $target_path2 . basename( $_FILES['uploadedfile2']['name']);
if(move_uploaded_file($_FILES['uploadedfile2']['tmp_name'], $target_path2)) {
    echo "n The second file ".  basename( $_FILES['uploadedfile2']['name']).
    " has been uploaded.";
} else{
    echo "There was an error uploading the file, please try again!";
    echo "filename: " .  basename( $_FILES['uploadedfile2']['name']);
    echo "target_path2: " .$target_path2;
}

$user = $_REQUEST['user'];
echo "n String Parameter send from client side : " . $user;
?>
Was it helpful?

Solution

Your file is most likely indeed properly uploaded in both cases. But the target URL is a PHP script. PHP has a limit (can be set in PHP options) how much data it accepts in a post (Can't remember the default, but it was pretty low).

Investigate how much data the script can accept.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top