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

本篇主要介绍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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值