0

这是我的代码

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 文件时出错有人知道错误在哪里吗?(错误 = 数据未上传,但声明已上传)

它表示两者都成功上传。

我的日志猫

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

1 回答 1

1

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

调查脚本可以接受多少数据。

于 2012-08-24T10:33:59.863 回答