我正在尝试将图片从手机上传到服务器。所以我得到图像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):**
答案 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”中,我可以从日志输出中看到。