您的位置:首页 > 移动开发 > Android开发

Android 和php交互及图片上传功能

2015-10-30 10:49 453 查看
本篇主要介绍andriod上传服务器图片功能和php端接收图片功能

先上几张效果图:











首先Android端需要一个上传路径也就是php上传图片文件的路径,我对php了解的不多,就按照没有用框架的模式来的,最简单的路径:x:/www/home/admin/upload.php

php部分

我先说一下upload.php怎么写的,贴一下代码:

<?php
echo "这是admin下Upload文件";
//------------------------------上传文件/图片案列---------------
//print_r($_FILES);
header("content-Type: text/html; charset=Utf-8");
$filearray=$_FILES["file"];
print_r($filearray);
//if(($filearray["type"]=="image/png"||
//   $filearray["type"]=="image/gif"||
// $filearray["type"]=="image/jpeg")&&$filearray["size"]>1024)
if($filearray["size"]>1024)
{
if($filearray["error"]>0)
{
echo "出现了错误,错误代码:".$filearray["error"];
}
else
{
echo "文件名字:".$filearray["name"]."<br/>";
echo "文件大小:".($filearray["size"]/1024)."KB<br/>";
echo "文件类型:".$filearray["type"]."<br/>";
echo "文件的临时存储路径:".$filearray["tmp_name"]."<br/>";
$path=$_SERVER['DOCUMENT_ROOT']."/Home/admin/upload/";
$PackName=$path.$filearray["name"];
echo "<br/>根路径:".$_SERVER['DOCUMENT_ROOT'];
//判断文件夹是否存在,不存在则创建,存在则检查要上传的文件是否已经存在
if(is_dir($path))
{
if(file_exists($PackName))
{
echo("file: $PackName exists");
}
else
{
//存储的文件的编码格式转换下,文档中是utf-8格式,但文件夹里默认的是
//gbk格式,要不然中文会乱码
move_uploaded_file($filearray["tmp_name"],iconv("UTF-8", "GBK",$PackName));
}
}
else
{
//文件夹不存在,先创建在上传
//echo "目录".$path."不存在,创建文件夹并上传<br/>";
mkdir($path);
move_uploaded_file($filearray["tmp_name"],iconv("UTF-8", "GBK",$PackName));

}

}
}
else
{
echo "上传的文件不合法,请选择png,gif或jpeg图片格式,并且图片大小大于10kb";
}

?>


这是php的代码,中间注释的部分是关于上传的是否是图片的判断,我给注释了,这样可以上传不止图片,文档都可以。

Android部分

我用的是post方式上传,httpclient模式。

post部分代码:

public static String GetJsonData(MultipartEntity mulEntity)
{
String str = "";
HttpPost httpPost=new HttpPost(Path);
httpPost.setEntity(mulEntity);
HttpClient httpclient=new DefaultHttpClient();
//设置超时时间
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,10000);
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
HttpResponse httpResponse;
try {
httpResponse = httpclient.execute(httpPost);
HttpEntity httpEntity= httpResponse.getEntity();
str=EntityUtils.toString(httpResponse.getEntity(), "GBK");
} catch (ClientProtocolException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return str;
}
public class HttpData {
//上传图片
public static String uploadimg(String img)
{
if(!TextUtils.isEmpty(img))
{
MultipartEntity mpEntity = new MultipartEntity();
mpEntity.addPart("file", new FileBody(new File(img)));
return HttpConn.GetJsonData(mpEntity);
}
return null;
}
}


其实不难,主要注意几个地方就可以了:

1.起初php上传文件有个大小限制,默认的是不能大于2M,在php.ini配置文件里修改即可

max_execution_time = 1800

max_input_time = 1800

post_max_size = 500M

upload_max_filesize = 500M

2.要上传的图片名字问题,不能带有:,<>,,*等,我之前采用时间命名图片,中间带冒号,一直出错,所以一定要注意。

ok,共享下源码,有需要的可以看看。

http://download.csdn.net/detail/tenda1988/9226219
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: