0

我想将带有一些评论的图像从 Android 设备发送到 PHP 服务器。我想利用 JSON 来交换数据。我看了很多地方,但我没有得到正确的提示。任何人都可以提出一些建议来让它与 PHP 一起使用吗?

我不想使用 base65,因为它会增加数据负载,并且图像大小也是一个问题。请提出您的想法和正确的方法来发展它。

我的安卓代码:

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

我不确定如何使用 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 ?

所以我在这里有两个问题: 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 回答