今天写项目的时候需要多图片上传,就用okhttp简单写一个例子。
public class MainActivity extends AppCompatActivity {
private OkHttpClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
client = new OkHttpClient();
postImage();
}
private void postImage(){
//这里方便演示。读取drawable里的图片。
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.demo);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("img_1","1.jpg", RequestBody.create(MediaType.parse("image/jpeg"),byteArrayOutputStream.toByteArray()))
.addFormDataPart("img_2","2.jpg", RequestBody.create(MediaType.parse("image/jpeg"),byteArrayOutputStream.toByteArray()))
;
//有多个图片就用for循环添加即可
MultipartBody build = builder.build();
okhttp3.Request bi = new okhttp3.Request.Builder()
.url("后台地址")
.post(build)
.build();
client.newCall(bi).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("TAG", "onFailure: 失败");
}
@Override
public void onResponse(Call call, okhttp3.Response response) throws IOException {
Log.i("TAG", "onResponse: " + response.body().string());
//提交成功处理结果....
}
});
}
}
配合PHP后台接收图片地址:
具体代码如下,支持多个图片的上传,返回json格式,方便客户端进行处理数据。
<?php
header('Content-type: application/json;charset=utf-8');
if(empty($_FILES)) die('{"status":0,"msg":"错误提交"}');
$dirPath = './img/';//设置文件保存的目录
if(!is_dir($dirPath)){
//目录不存在则创建目录
@mkdir($dirPath);
}
$count = count($_FILES);//所有文件数
if($count<1) die('{"status":0,"msg":"错误提交"}');//没有提交的文件
$success = $failure = 0;
foreach($_FILES as $key => $value){
//循环遍历数据
$tmp = $value['name'];//获取上传文件名
$tmpName = $value['tmp_name'];//临时文件路径
//上传的文件会被保存到php临时目录,调用函数将文件复制到指定目录
if(move_uploaded_file($tmpName,$dirPath.date('YmdHis').'_'.$tmp)){
$success++;
}else{
$failure++;
}
}
$arr['status'] = 1;
$arr['msg'] = '提交成功';
$arr['success'] = $success;
$arr['failure'] = $failure;
echo json_encode($arr);
Android端使用okHttp上传,测试上传图如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关文章:
建站之星与建站宝盒如何选择最佳方案?
如何在阿里云香港服务器快速搭建网站?
浅谈Javascript中的Label语句
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
电商平台网站制作流程,电商网站如何制作?
如何自定义建站之星网站的导航菜单样式?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
广州商城建站系统开发成本与周期如何控制?
济南专业网站制作公司,济南信息工程学校怎么样?
婚礼视频制作网站,学习*后期制作的网站有哪些?
广州营销型建站服务商推荐:技术优势与SEO优化解析
建站主机功能解析:服务器选择与快速搭建指南
网站制作大概多少钱一个,做一个平台网站大概多少钱?
制作企业网站建设方案,怎样建设一个公司网站?
家具网站制作软件,家具厂怎么跑业务?
企业微网站怎么做,公司网站和公众号有什么区别?
制作网站的公司有哪些,做一个公司网站要多少钱?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
建站之星如何防范黑客攻击与数据泄露?
建站之星安装模板失败:服务器环境不兼容?
,柠檬视频怎样兑换vip?
如何通过免费商城建站系统源码自定义网站主题与功能?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
装修招标网站设计制作流程,装修招标流程?
建站主机服务器选购指南:轻量应用与VPS配置解析
如何通过服务器快速搭建网站?完整步骤解析
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
Swift中switch语句区间和元组模式匹配
网站app免费制作软件,能免费看各大网站视频的手机app?
如何制作网站标识牌,动态网站如何制作(教程)?
建站之星安装后如何自定义网站颜色与字体?
高端云建站费用究竟需要多少预算?
广平建站公司哪家专业可靠?如何选择?
网站微信制作软件,如何制作微信链接?
如何选择PHP开源工具快速搭建网站?
深圳网站制作案例,网页的相关名词有哪些?
如何在阿里云服务器自主搭建网站?
如何高效搭建专业期货交易平台网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何破解联通资金短缺导致的基站建设难题?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何选择靠谱的建站公司加盟品牌?
实例解析Array和String方法
制作国外网站的软件,国外有哪些比较优质的网站推荐?
建站之星安装后如何配置SEO及设计样式?
如何快速上传自定义模板至建站之星?
Python文件管理规范_工程实践说明【指导】
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何选择最佳自助建站系统?快速指南解析优劣
*请认真填写需求信息,我们会在24小时内与您取得联系。