Android图片上传失败

时间:2011-09-05 14:07:47

标签: php android http upload

我正在尝试将图片从手机上传到服务器。所以我得到图像uri并用它创建一个NameValuePair。然后我使用以下Android代码获取连接并上传图片。这是从之前的stackoverflow问题中获取的(我会链接,但即使使用Google也无法找到它...)

public void post(String url, List<NameValuePair> nameValuePairs) {

    HttpClient httpClient = new DefaultHttpClient();
    HttpContext localContext = new BasicHttpContext();
    HttpPost httpPost = new HttpPost(url);

    try {
           MultipartEntity entity = new  
                       MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);


             entity.addPart(nameValuePairs.get(0).getName(), new FileBody(new File(nameValuePairs.get(0).getValue())));
        Log.v("Uploading file",nameValuePairs.get(0).getValue());
        httpPost.setEntity(entity);
            HttpResponse response = httpClient.execute(httpPost);
           Log.v("Response", response.toString());
        } catch (IOException e) {
          e.printStackTrace();
        }
   }

在服务器端,我有以下代码。这是PHP,我是一个完整的新手。我知道代码中没有验证,但我想在开始担心其他一切之前让上传工作。

      <?php

     if($_FILES){
           $name = $_FILES['image']['name'];
           move_uploaded_file($_FILES['image']['temp'],$name);

           echo "success!";
     }
    else {

  echo "Nothing uploaded";
   }
 ?>

这里NameValuePair的名称是'image',用作文件名。

没有上传任何内容,但建立了连接。请帮忙。

根据请求,我将print_r($ Files)放入代码中。服务器的响应是:

09-05 23:23:35.745: VERBOSE/Response(13849): Array

09-05 23:23:35.745: VERBOSE/Response(13849): (

09-05 23:23:35.745: VERBOSE/Response(13849):     [image] => Array

09-05 23:23:35.745: VERBOSE/Response(13849):         (

09-05 23:23:35.745: VERBOSE/Response(13849):             [name] => DSC_0100.jpg

09-05 23:23:35.745: VERBOSE/Response(13849):             [type] => 

09-05 23:23:35.745: VERBOSE/Response(13849):             [tmp_name] => /tmp/phpXcY8L1

09-05 23:23:35.745: VERBOSE/Response(13849):             [error] => 0


09-05 23:23:35.745: VERBOSE/Response(13849):             [size] => 806873

09-05 23:23:35.745: VERBOSE/Response(13849):         ) 09-05 23:23:35.745: VERBOSE/Response(13849): )

09-05 23:23:35.745: VERBOSE/Response(13849):**

2 个答案:

答案 0 :(得分:0)

在服务器端,请添加此代码,

print_r($_FILES);

然后检查数组参数'error',然后从这里检查错误代码   http://php.net/manual/en/features.file-upload.errors.php

如果你想要android的文件上传代码那么请告诉我,我可以在这里发布

我希望这会对你有所帮助。

谢谢。

答案 1 :(得分:0)

move_uploaded_file($ _ FILES [ '图像'] [ '温度'],$名);用

替换这一行

move_uploaded_file($ _ FILES [ '图像'] [ 'tmp_name的值'],$名);

文件的临时文件名在“tmp_name”中,我可以从日志输出中看到。