1

Android から php サーバーに画像ファイルをアップロードしようとしましたが、php の $_FILES 配列は常に空です。それがサーバーの問題なのかクライアントの問題なのかをテストするために、Androidアプリと同じデータを送信する簡単なWebフォームを作成しました。これは機能し、Androidコードに問題があると思いました。

私のphpコードは次のとおりです。

//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!";
}

そしてアンドロイド部分:

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

}

私はちょうど戻ってきます

array(0){
}

両方の var_dump($_POST); および var_dump($_FILES);

これは動作する私のフォームコードです:

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

この例と、同様のコードを共有しているように見える他のいくつかの例も試しましたが、同じ結果が得られたので、純粋に試行済みのライブラリであるため、loopJ を使用することにしました。

4

1 に答える 1

1

わかりました。データの送信先の URL が www で始まっていることがわかりました。サーバーは、www. これにより、何らかの理由ですべてのデータが削除されました。したがって、数日間髪を引っ張った後、それはたった4つの単純なバックスペースでした....

于 2013-10-08T17:15:09.320 に答える