0

Android デバイスから PHP サーバーにコメント付きの画像を送信したいと考えています。JSONを利用してデータを交換したい。私は多くの場所を見ましたが、正しいヒントが得られません。これをPHPで動作させるための指針を誰かが提案できますか?

データロードが増加し、画像サイズもこれに問題があるため、base65 を使用したくありません。これを開発するためのあなたの考えと正しいアプローチを提案してください。

私のAndroidコード:

   // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("name", name));
                params.add(new BasicNameValuePair("price", price));
                params.add(new BasicNameValuePair("description", description));
                params.add(new BasicNameValuePair("image","/sdcard/DCIM/android_1.png"));
// getting JSON Object       
            JSONObject json = jsonParser.makeHttpRequest(url_create_product,"POST", params);

            // check log cat fro response
            Log.d("Create Response", json.toString());
// check for success tag
            try {
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // successfully created product
                    Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);
                    startActivity(i);

                    // closing this screen
                    finish();
                } else {
                    // failed to create product
                }

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

マルチパートで画像を追加すると、次のようになります。

 MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
            try {
                reqEntity.addPart("name", new StringBody(name));
                reqEntity.addPart("Id", new StringBody(price));
                reqEntity.addPart("title",new StringBody(description));
                //reqEntity.addPart("pic", new FileBody(new File("/sdcard/DCIM/android_1.png")));

            } catch (UnsupportedEncodingException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            Bitmap bitmap = null ;
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            bitmap.compress(CompressFormat.JPEG, 100, bos);
             byte[] data = bos.toByteArray();
             ByteArrayBody bab = new ByteArrayBody(data, "/sdcard/android_1.png");
            reqEntity.addPart("pic", bab);

このマルチパート reqentitty を JSON で渡す方法がわかりません:

// JSON オブジェクトの取得
JSONObject json = jsonParser.makeHttpRequest(url_create_product,"POST", params);

これをPHPで画像として読み取る方法。以下のように画像PHP作業コードなし:

<?php

/*
 * Following code will create a new product row
 * All product details are read from HTTP Post Request
 */

// array for JSON response
$response = array();
$target_path1 = "uploads/";

// check for required fields
if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {

    $name = $_POST['name'];
    $price = $_POST['price'];
    $description = $_POST['description'];    
//I have data from android here now but How I can read image here ?

ここで 2 つの質問があります: 1. イメージを JSONObject の一部として渡す方法 (イメージなしで動作する最初のコード) 2. このイメージを PHP で読み戻すにはどうすればよいですか?

コメントや提案をいただければ幸いです。ありがとう。

4

1 に答える 1

0

JSON を使用して画像を渡したことはなく、テキストのみを渡しましたが、Android を使用して HTTP を使用して情報を投稿できます。このチュートリアルをチェックしてくださいhttp://reecon.wordpress.com/2010/04/25/uploading-files-to-http-server-using-post-android-sdk/

于 2012-08-23T03:24:18.733 に答える