文件大小较大时上传文件错误

时间:2012-08-24 06:16:53

标签: java php android upload multipartentity

这是我的代码

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; 
    }

当我上传大约2MB的文件时它可以工作,但是当我上传20 + MB文件时出错 谁知道错误在哪里? (错误=数据未上传,但已声明已上传)

它表示上传成功。

我的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 : 

这是我的PHP脚本

<?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;
?>

1 个答案:

答案 0 :(得分:1)

在这两种情况下,您的文件很可能都已正确上传。但目标URL是PHP脚本。 PHP有一个限制(可以在PHP选项中设置)它在帖子中接受多少数据(不记得默认值,但它非常低)。

调查脚本可以接受的数据量。