【问题标题】:Android Image Upload FailsAndroid 图片上传失败
【发布时间】:2011-09-05 14:07:46
【问题描述】:

我正在尝试将图像从手机上传到服务器。所以我得到了图像 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):**

【问题讨论】:

  • 看起来上传部分正在工作,只是移动了不太正确的文件。

标签: php android http upload


【解决方案1】:

move_uploaded_file($_FILES['image']['temp'],$name);将此行替换为

move_uploaded_file($_FILES['image']['tmp_name'],$name);

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

【讨论】:

    【解决方案2】:

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

    print_r($_FILES);
    

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

    如果你想要安卓的文件上传代码,请告诉我我可以在这里发帖

    希望对你有帮助。

    谢谢。

    【讨论】:

    • 我输入了打印代码并在我原来的问题中发布了lolcat。我希望这有助于解决问题。我不明白输出。
    猜你喜欢
    • 2014-10-25
    • 2016-04-11
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2017-02-22
    相关资源
    最近更新 更多