前两个月有幸参加一次免费培训,开发了一款小软件。发现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如何重命名上传的文件:
Android Studio 可能找不到 org.apache.http.Header,参考:
时间: 2024-10-17 07:46:22