2

Apache Commons HttpClientを使用して、カメラで撮影した画像をAndroidデバイスやその他のパラメーターに投稿しようとしています。

私のPOSTリクエストは正しく機能し、パラメータはサーバーによって正常に読み取られますが、画像がアップロードされません。アップロードはPHPスクリプトによって処理され、HTMLフォームを使用してPHPスクリプトをテストしたため、適切なHTTPPostによって画像が正常にアップロードされることを確認できます。以下のコードで写真!=nullであることも確認できます。

HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost("http://myurl.com/upload.php");
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

if (photo != null) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    photo.compress(CompressFormat.JPEG, 75, bos);
    byte[] data = bos.toByteArray();

    ByteArrayBody bab = new ByteArrayBody(data, "submission-1.jpg");

    reqEntity.addPart("file", bab);
}

reqEntity.addPart("date", new StringBody(date));
reqEntity.addPart("lat", new StringBody(latitude));
reqEntity.addPart("long", new StringBody(longitude));
reqEntity.addPart("name", new StringBody(name));
reqEntity.addPart("email", new StringBody(email));
reqEntity.addPart("comments", new StringBody(comments));

postRequest.setEntity(reqEntity);
HttpResponse response = httpClient.execute(postRequest);
4

1 に答える 1

0

私はこれを理解しました。うまくいけば、他の誰かがこれが役立つと思うでしょう。私がしなければならなかったのは、ファイルの種類をこの行に追加することだけでした:

ByteArrayBody bab = new ByteArrayBody(data, "image/jpeg", "submission.jpg");
于 2012-06-11T18:08:57.127 に答える