Android 和php交互及图片上传功能
2015-10-30 10:49
453 查看
本篇主要介绍andriod上传服务器图片功能和php端接收图片功能
先上几张效果图:
首先Android端需要一个上传路径也就是php上传图片文件的路径,我对php了解的不多,就按照没有用框架的模式来的,最简单的路径:x:/www/home/admin/upload.php
这是php的代码,中间注释的部分是关于上传的是否是图片的判断,我给注释了,这样可以上传不止图片,文档都可以。
post部分代码:
其实不难,主要注意几个地方就可以了:
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
先上几张效果图:
首先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
相关文章推荐
- android 基础控件 EditText
- android 防丢器 ibeacon
- Android studio快捷键重写继承父类的抽象方法
- Android M 新的运行时权限开发者需要知道的一切
- [Android knowledge]
- Android MVP模式
- android项目开发之单元测试
- Android MVP模式
- android 图片时配
- Android程序调试
- Android ORM数据库框架之-greenDao(四)
- Mars老师的Android学习基本路线
- 修改Android系统设置方法
- Android:TabHost实现Tab切换
- Android 用纯代码实现复杂界面
- 浅析:Android--Fragment的懒加载
- android indication
- Android Studio 多渠道打包自命名
- Android点击空白区域,隐藏输入法软键盘
- 【安卓自定义控件】自定义ViewGroup实现透明背景的ViewPager效果