3

我想使用 MultipartEntity 上传图片。我尝试了下面的代码。

我没有收到任何错误,但图片没有上传。我有足够的上传权限

PHP

<?php

    //Receive the data from android
    $name = $_POST['name'];
    $data = $_POST['data'];

    //Receive the file
    $file = $_FILES['image']

    move_uploaded_file($_FILES['image']['tmp_name'], "User_files/".$_FILES['image']['name']);
    //process the data

    //return response to the server

    echo json_encode(
                array(
                    'result'=>'success',
                    'msg'=>'Report added successfully.'
                    )
                );

                ?>

public void upload() throws Exception {
        //Url of the server
        String url = "URL";
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(url);
        MultipartEntity mpEntity = new MultipartEntity();
        //Path of the file to be uploaded
        String filepath = Environment.getExternalStorageDirectory()+"/a.png";
        File file = new File(filepath);
        ContentBody cbFile = new FileBody(file, "image/*");         

        //Add the data to the multipart entity
        mpEntity.addPart("image", cbFile);
        mpEntity.addPart("name", new StringBody("Test", Charset.forName("UTF-8")));
        mpEntity.addPart("data", new StringBody("This is test report", Charset.forName("UTF-8")));
        post.setEntity(mpEntity);
        //Execute the post request
        HttpResponse response1 = client.execute(post);
        //Get the response from the server
        HttpEntity resEntity = response1.getEntity();
        String Response=EntityUtils.toString(resEntity);
        Log.d("Response:", Response);
        //Generate the array from the response
        JSONArray jsonarray = new JSONArray("["+Response+"]");
        JSONObject jsonobject = jsonarray.getJSONObject(0);
        //Get the result variables from response 
        String result = (jsonobject.getString("result"));
        String msg = (jsonobject.getString("msg"));
        //Close the connection
        client.getConnectionManager().shutdown();
    }
4

1 回答 1

6

您需要在清单文件中授予WRITE_EXTERNAL_STORAGE和权限READ_EXTERNAL_STORAGE

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
于 2013-04-15T06:38:26.967 回答