1

次のコードを使用して画像をアップロードしようとしています。

  HttpClient httpClient = new DefaultHttpClient();

            HttpPost httpPost = new HttpPost(
                    "http://konsole-data.de/uploadtest/upload.php");

            MultipartEntity multiPart = new MultipartEntity();
            multiPart.addPart("picture", new FileBody(new File(path)));

            httpPost.setEntity(multiPart);
            try {
                HttpResponse res = httpClient.execute(httpPost);

                            Toast.makeText(getApplicationContext(),res.toString(),
                        Toast.LENGTH_LONG).show();
            } catch (ClientProtocolException e) {

                e.printStackTrace();
            } catch (IOException e) {

                e.printStackTrace();
            }

パスは、/mnt/sdcard/DCIM/12712.jpg のような画像を識別する文字列です。接続は機能しますが、サーバーに画像がアップロードされません。ここでデバッグ ファイルを確認できます: http://konsole-data.de/uploadtest /data/20121214-144802-.dbg
何が間違っていますか?

4

1 に答える 1

2

おそらくHttpMultipartMode、ファイルの 、および MIME タイプを指定する必要があります (ただし、これは必須ではないと思います)。

MultipartEntity multipart = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

FileBody bin = new FileBody(new File(path), "image/jpeg");
multipart.addPart("picture", bin);

編集:

また、正しいパスを使用しているかどうかも確認する必要があります。Fileオブジェクトを匿名の内部クラスとして作成する代わりに:

File file = new File(path);
if(file.exists()){
    FileBody bin = new FileBody(file, "image/jpeg");
    multipart.addPart("picture", bin);
} else {
    Log.w(YourClass.class.getSimpleName(), "File " + path + " doesn't exist!");
}
于 2012-12-14T14:04:34.223 に答える