Android OkHttp3 上传多张图片_android okhttp3 多图上传-程序员宅基地

技术标签: 图片  android  Android Studio  

经过实践,android与php交互,已经成功搞定!

一、Android 端

 /**
     * 上传文件及参数
     */
    private void sendMultipart(){
        File sdcache = getExternalCacheDir();
        int cacheSize = 10 * 1024 * 1024;
        //设置超时时间及缓存
        OkHttpClient.Builder builder = new OkHttpClient.Builder()
                .connectTimeout(15, TimeUnit.SECONDS)
                .writeTimeout(20, TimeUnit.SECONDS)
                .readTimeout(20, TimeUnit.SECONDS)
                .cache(new Cache(sdcache.getAbsoluteFile(), cacheSize));


        OkHttpClient mOkHttpClient=builder.build();

        MultipartBody.Builder mbody=new MultipartBody.Builder().setType(MultipartBody.FORM);

        List<File> fileList=new ArrayList<File>();
        File img1=new File("/sdcard/wangshu.jpg");
        fileList.add(img1);
        File img2=new File("/sdcard/123.jpg");
        fileList.add(img2);
        int i=0;
        for(File file:fileList){
            if(file.exists()){
                Log.i("imageName:",file.getName());//经过测试,此处的名称不能相同,如果相同,只能保存最后一个图片,不知道那些同名的大神是怎么成功保存图片的。
                mbody.addFormDataPart("image"+i,file.getName(),RequestBody.create(MEDIA_TYPE_PNG,file));
                i++;
            }
        }

        RequestBody requestBody =mbody.build();
        Request request = new Request.Builder()
            .header("Authorization", "Client-ID " + "...")
            .url("http://192.168.1.105/interface/index.php?action=sendMultipart")
            .post(requestBody)
            .build();

        mOkHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.i("InfoMSG", response.body().string());
            }
        });
    }





二、Php服务端

if ($act == "sendMultipart") {
	$result="";
	try {
		foreach ($_FILES as $key => $val) {
			$imgName = time().rand(1000, 9999);//随机数
			$folder = "images";//接口文件同目录下创建此文件夹,当然也可以通过代码的形式判断/创建
			$file_dir = $folder . "/" . $imgName . ".jpg";
			if (move_uploaded_file($val["tmp_name"], $file_dir)) {
				$result .= $val["name"] . "保存成功";
			} else {
				$result .= "在服务器中保存失败" . $val["tmp_name"] . "--------";
			}
			echo "返回信息:" . $result."<br />\n";
		}
	} catch(exception $ex) {
		echo $ex;
	}
}


没什么可总结的了,都在注释里了。









版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/moniteryao/article/details/52700934

智能推荐

CDH5.15.2替换JDK1.7到1.8_cdh jdk1.7-程序员宅基地

文章浏览阅读561次。一、实现功能CDH5.15.2安装过程中默认是jdk1.7,但是很多程序是jdk1.8开发的,所以,还是替换jdk1.8方便一些。二、实现步骤1.自定义安装JDK,并配置环境变量/etc/profile。默认已会,否则参考:https://blog.csdn.net/u010886217/article/details/834793802.通过cm关闭所有服务3.命令行关..._cdh jdk1.7

Python网络爬虫与信息提取——网络爬虫Scrapy框架_网络爬虫与信息提取 目录-程序员宅基地

文章浏览阅读2.1k次,点赞7次,收藏40次。第四章 网络爬虫之Scrapy框架● Scrapy爬虫框架Scrapy爬虫框架介绍Scrapy爬虫框架解析requests库和Scrapy爬虫比较Scrapy爬虫常用命令● Scrapy爬虫基本使用● Scrapy爬虫实例..._网络爬虫与信息提取 目录

select2的基本用法 allowClear-程序员宅基地

文章浏览阅读3.4k次。select2的基本用法公司有个项目需要用到类似百度搜索功能的下拉框,自然想到使用select2。先看下select2的效果图,如下:下来简单介绍下这个控件的基本用法,主要简单介绍下远程加载数据;1.首先引入需要的文件:select2.full.js、select2.min.css(4.0.1版本)和jquery.1.8.3及以上.2.远程加载数据示例 1 2 3 4 5 6 7 8 9 10 _allowclear

解决el-table设置固定高度后,展示不同列时表格高度变小bug_el-table高度问题-程序员宅基地

文章浏览阅读572次。究其原因可知是el-table列动态发生变化后,el-table__body-wrapper的高度变小了。在更新表格数据后对el-table进行重载。_el-table高度问题

使用 ggsci 包中的 `scale_color_uchicago` 函数指定可视化图像的配色符合芝加哥大学配色要求(R语言)_uchicago配色-程序员宅基地

文章浏览阅读55次。函数来指定可视化图像的配色方案符合芝加哥大学的配色要求。你可以按照示例代码中的步骤,在自己的 R 代码中应用这些函数,以创建美观且专业的数据可视化图像。函数将会为图像中的颜色映射使用芝加哥大学的配色方案。在数据可视化中,选择适合的配色方案可以提升图像的可读性和美观性。包中的函数,你可以轻松地为你的数据可视化图像选择合适的配色方案,以满足特定的需求。运行上述代码后,你将会看到散点图中的颜色已经根据芝加哥大学的配色方案进行了调整。包中的函数来指定特定的配色方案。函数来指定图像的配色方案。_uchicago配色

 python 快速安装模块包--pip install -i http://pypi.douban.com/simple/ 替换名 --trusted-host pypi.douban.com_pip -i http-程序员宅基地

文章浏览阅读6.1k次。python 快速安装模块包pip命令默认会连接在国外的python官方服务器下载,速度比较慢,你还可以使用国内的豆瓣源,数据会定期同步国外官网,速度快好多pip install -i http://pypi.douban.com/simple/ sayhi --trusted-host pypi.douban.com #sayhi是模块名软件一般会被自动安装你python安装目录的这个子目录里 /your_python_install_path/3.6/lib/python3._pip -i http

随便推点

java/jsp/ssm红叶房屋租售管理系统【2024年毕设】-程序员宅基地

文章浏览阅读18次。springboot基于Java和SQLserver的医院血库管理系统。springboot基于SpringBootVue的校园信息共享系统。springbootxxx餐厅自主点餐系统的设计与实现。springboot基于微信小程序的古诗词学习阅读平台。jsp基于Java的服装信息管理系统的设计与实现。springboot基于Java的动漫网站。ssm基于微信小程序的校园空闲教室预约系统。ssm基于微信小程序的健康饮食推荐系统。ssm基于Java的图书馆座位预约系统。

[翻译]Swift编程语言—— 扩展_9123456789yongyingyufanyi-程序员宅基地

文章浏览阅读465次。扩展_9123456789yongyingyufanyi

TypeError: non_max_suppression() got an unexpected keyword argument 'score_threshold'_typeerror: got an unexpected keyword argument 'sco-程序员宅基地

文章浏览阅读1.6k次。在使用TensorFlow 的Object Detection中,使用 TensorFlow 1.8及以下环境会报错如下:TypeError: non_max_suppression() got an unexpected keyword argument 'score_threshold'解决方法:升级TensorFlow到1.9及以上1.github参考..._typeerror: got an unexpected keyword argument 'score

WIN提权补丁提权,at,sc,psexes提权_怎么根据补丁号提权-程序员宅基地

文章浏览阅读1.1k次。win提权分为web和本地提权web提权就是getshell后,权限是网站权限,要进行提权本地提权是本地用户进行提权本地用户的权限大于网站权限,所以本地提权成功概率比web提权概率大因为我们做渗透测试,一般都是从网站入侵。所以大部分都是web提权。而本地提权一般运用在内网中。_怎么根据补丁号提权

Vagrant上运行SITL-程序员宅基地

文章浏览阅读41次。打算给Tower加个手机遥控的功能,用运行于vagrant sitl来联合调试,在公司的网络条件很好的情况下没出任何错,都是根据http://ardupilot.org/dev/docs/setting-up-sitl-using-vagrant.html运行,但家里就不行,先是vagrant的box下载不下来,然后是ubuntu的apt源还是官方的,太慢,接着就是pip2也不行,在此把解决的方案..._sitlno such file or directory

【JS基础】类型转换——不同数据类型比较-程序员宅基地

文章浏览阅读311次。小试牛刀  输出下列数据比较结果  有没有全对呢?If the answer is "yes", congratulations!两个不同类型数据比较时隐式转换规则  1) 数字和字符串、布尔类型、数组进行比较时,字符串(或布尔类型、或数组)先转换为数字(Number),再进行比较;数组转数字请参看后文。  使用 if(num) ..._前端不同数据类型比较

推荐文章

热门文章

相关标签