zoukankan      html  css  js  c++  java
  • 安卓上传文件至PHP服务器

    前两个月有幸参加一次免费培训,开发了一款小软件。发现AsyncHttpClient还真是好用。

    直奔主题,安卓上传文件至PHP服务器:

    1.PHP端服务器:

    <?php
    //链接数据库
    include ("config/db.php");
    
    //获取用户id
    $userid = $_POST['userid'];
    
    //处理上传文件
    $base_path = "upload/"; 
    $fileName=$_FILES['file']['name']; 
    $name=explode('.',$fileName);      
    $userpicads = $base_path .  'user_'.$userid. '.' .$name[1]; 
    
    /*
    返回状态码:
    300: 处理成功
    301:服务器异常
    */
    $status=301;
    
    if (move_uploaded_file ( $_FILES ['file'] ['tmp_name'], $userpicads )) {  
    	$status=300; 
    } else {  
    	$status=301; 
    }
    
    //如果保存文件成功,更新数据库
    if($status==300)
    {
    	$sql = "update mh_user set userpicads='{$userpicads}' where id={$userid}";
    	$pdo->exec($sql);
    }
    
    //输出返回结果
    $ret = array('status'=> $status);
    echo json_encode($ret);
    
    ?>
    

    2.安卓端添加网络权限

    <uses-permission android:name="android.permission.INTERNET" />
    

      

    3.安卓端导入以下jar包(这些很容易就能下载到):

      android-async-http-1.4.7.jar (必须)
      gson-2.1.jar (可选,解析json格式用)
      httpcore-4.4.4.jar(可选,用Android Stutio可能还需要导入这个)

    4.安卓主要代码:

    int userid = 1;
    String username = "HelloWorld";
    String filepath = "/mnt/sdcard/Download/mm.jpg";
    String uploadUrl = "http://192.168.1.103/test/upload.php";
    
    
    btn_upload.setOnClickListener(new View.OnClickListener() {
    
    	@Override
    	public void onClick(View v) {
    		
    		AsyncHttpClient client = new AsyncHttpClient();
    		RequestParams params = new RequestParams();
    		
    		//添加参数
    		params.put("userid", userid);
    		params.put("username", username);
    		
    		try {
    			//添加文件
    			params.put("file", new File(filepath));
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		}
    		
    		client.post(uploadUrl, params, new AsyncHttpResponseHandler() {
    			@Override
    			public void onSuccess(int i, org.apache.http.Header[] headers, byte[] bytes) {
    				try {
    					//获取返回内容
    					String resp = new String(bytes, "utf-8");
    					
    					//在这里处理返回的内容,例如解析json什么的...
    					
    				} catch (UnsupportedEncodingException e) {
    					e.printStackTrace();
    				}
    			}
    
    			@Override
    			public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) {
    				//在这里处理连接失败的处理...
    			}
    		});
    	}
    });
    

      

    本文主要参考:

    http://blog.csdn.net/fancylovejava/article/details/13506745

    PHP如何重命名上传的文件:

    http://zhidao.baidu.com/link?url=lipsDeUjztDw-kwpcWcs7b16_GEer7T2r7wBM3MMzRpBCZuct-wikqv6j5vsZxK39KotlB8qH8bVXOqRCXHosq

    Android Studio 可能找不到 org.apache.http.Header,参考:

    http://zhidao.baidu.com/link?url=_RM6ndKff2FpUf6i-I97FiyKpnwPsHCg7EgYFXjTJgAhZlLN8DlT55VX02sD3epoEw72BWU2xbWqLN_yfHXBGw0nKxqbctMzSbo51UPePRi

  • 相关阅读:
    02 nginx 进程结构_热部署_nginx虚拟主机
    Go基础
    01 nginx 概述及安装
    项目--微信小程序
    小程序框架
    常用数据集合
    看正月点灯笼老师的笔记—线段树
    并查集—汇总
    看正月点灯笼老师的笔记—qsort 和 bsearch
    看正月点灯笼老师的笔记—BFS和DFS ( 3 )
  • 原文地址:https://www.cnblogs.com/bruce27/p/5361161.html
Copyright © 2011-2022 走看看