带有评论的图片从PHP发送

时间:2012-08-23 02:31:56

标签: php android json image

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

我不想使用base65,因为它会增加dataload,图像大小也是一个问题。请建议您的想法和正确的方法来发展这一点。

我的Android COde:

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

当我用multipart:

添加图像时
 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格式阅读此图像?

我真的很感激任何意见或建议。 感谢。

1 个答案:

答案 0 :(得分:0)

我从未使用JSON传递图像,只使用文本,但您可以使用android通过使用HTTP发布信息。看看这个教程,它帮助了我http://reecon.wordpress.com/2010/04/25/uploading-files-to-http-server-using-post-android-sdk/