Android OkHttp3 上传多张图片

经过实践,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;
	}
}


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









评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值