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

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

1.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.安卓端添加网络权限

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) {

//在这里处理连接失败的处理...

}

});

}

});

本文主要参考:

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

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

php上传手机文件到服务器,安卓上传文件至PHP服务器(示例代码)相关推荐

  1. polycom安卓手机客户端_Spark,安卓上最好用的邮件客户端来了!附App下载

    在QQ.微信.钉钉这些即时通信软件的围剿下,才诞生20年不到的电子邮箱俨然已经像上个世纪的产物了.现在还在用Email的大部分是工作需要,私人的话顶多就是收收网站验证码激活邮件之类的.因此大多数人在手 ...

  2. android自定义文件选择,关于安卓自定义本地文件选择库的实现

    最近想重温一下旧知识,所以写了这一个库. androidx+kotlin 功能有:(1)多线程本地文件扫描 (2)ContentProvider扫描 注意:若使用本地扫描时,出现错误,请看文章:htt ...

  3. linux重定向进程输出到文件删除,Linux文件编辑器vim输出输入重定向、管道以及进程(示例代码)...

    合抱之木,生于毫末:九层之台,起于累土:千里之行,始于足下.正因基础的重要性,才又撸起了linux. linux编辑工具: VI VIM EMACS vim 是vi的升级版本,它不仅兼容vi的所有指令 ...

  4. 服务器所属文件变成nobody,NFS(expirtfs命令,NFS客户端创建新文件所属组和所属主都为nobody)(示例代码)...

    一.exportfs命令 nfs进程不能随便从新启动,如果不得已要重启,必须把客户端的挂载目录卸载,然后在从新启动. 这时候就可以用exportfs命令 -a             全部挂载或者全部 ...

  5. 服务器备份还原命令文件夹,Robocopy命令实现文件服务器镜像备份/增量备份操作(示例代码)...

    Robocopy是微软推出的可靠文件复制服务,经过测试,比xcopy更加优秀,特别是在复制ACL及文件时间戳方面. 免费同步软件通常在ACL同步这一块比较薄弱,而付费软件复杂操作,我们可以使用robo ...

  6. 怎样在linux系统上安装r,Linux系统之路——如何在CentOS7.2安装R(示例代码)

    使用ubuntu的小伙伴们直接使用命令sudo apt-get installr-base-dev或者r-base搞定.然而对于使用centos的我却一直卡在安装这一步,十分的悲催,只有羡慕的份,但也 ...

  7. jar注册成服务器,Spring Boot项目生成jar包,并在windows服务器中注册成服务,开机启动(示例代码)...

    背景: 使用Spring Boot开发的Web项目,打包生成了一个jar包,希望能部署在Windows服务器中 尝试: 1.Spring Boot生成的jar包,可以直接用java -jar运行,但是 ...

  8. 浪潮存储与虚拟服务器连接失败,浪潮-异构虚拟化存储研究(示例代码)

    1.什么是异构虚拟化 在实际生产中,我们可能使用到各种品牌的存储器(磁盘矩阵,硬盘),虚拟化技术将各种不同的存储介质, 虚拟化成一个统一的资源池,进行管理,这种技术就叫做异构虚拟化技术,是云计算的基础 ...

  9. aix oracle调整逻辑卷的大小,AIX上增加逻辑卷时报错误0516-787 extendlv: Maximum allocation for logical volume(示例代码)...

    AIX上增加逻辑卷时报错误0516-787 extendlv: Maximum allocation for logical volume jdelv02 is 512. 在往aix使用chfs -a ...

最新文章

  1. static关键字用法
  2. (五)Cisco dhcp snooping实例3-多交换机环境(DHCP服务器和DHCP客户端位于同VLAN)...
  3. SAP不同的产品是如何支持用户创建自定义字段的
  4. 【福利派送】浪漫七夕,不可辜负!这 8 份礼物请收下!
  5. ACL 2018 论文解读 | 基于深度强化学习的远程监督关系抽取
  6. C++ 异常基本语法
  7. 计算机指纹识别的原理步骤,指纹识别原理和过程
  8. file* linux,Linux基础——file命令与magic file
  9. 代码之美~Func让构造方法为属性赋值更灵活
  10. 解决vue项目背景图片在IE和火狐上不显示的问题
  11. 浅谈智能DNS云解析(二)
  12. ★一人一首成名歌曲★
  13. VS2010的aspx文件中的html代码的格式化整理的方法
  14. 【基础逻辑】对位乘法与升多项式子项根号——柯西不等式
  15. 网易考拉海购Dubbok框架优化详解
  16. PS-第四天-矢量形状与路径
  17. pdf太大了怎么缩小?怎么能缩小pdf文件大小?
  18. 小白都能做到的使用css如何让一个盒子沾满剩余的空间
  19. 拼多多资深程序员带你了解 ”砍一刀“的设计与实现
  20. qq软件下载2015正式版免费版v6.8官方版

热门文章

  1. 经济学与计算机科学结合,理论计算机在物理学和经济学领域的重要作用
  2. java jstat gcutil_java深入了解(jstat)
  3. python 数值运算 m op n_python数值运算 四则运算
  4. wincc无法修改服务器名称_WinCC(TIA)组件SIVARC在BA空调及冷热源系统改造项目中的应用...
  5. arima模型 p q d 确定_时间序列分析第07讲(ARIMA模型,季节时间序列模型,均值的估计)...
  6. nginx常见面试题
  7. php ahp和jhp,php7.4编译(centos)
  8. 修补分支提交注意事项
  9. 自编码器参数是否需要相称呢
  10. .bash_profile 写入时间格式YYYY-MM-DD HH24:MI:SS 时报错 not a valid identifier