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

  • 相关阅读:
    Java数据库小项目02--管家婆项目
    Java数据库小项目01--实现用户登录注册
    Java数据库小项目00---基础知识
    MySQL基础练习02---牛客网
    ICMP
    语法糖
    双绞线
    telnet 时代的 bbs
    ARPA
    IEEE802是一个局域网标准系列
  • 原文地址:https://www.cnblogs.com/bruce27/p/5361161.html
Copyright © 2011-2022 走看看