android上传多张图片到七牛云

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wei844067872/article/details/85328120
//依赖  
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
implementation 'com.squareup.okio:okio:2.1.0'
compile 'com.qiniu:qiniu-android-sdk:7.3.+'
implementation 'com.google.code.gson:gson:2.8.5'
<!--权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET"/>
//存放图片路径的ArrayList
private ArrayList<String> dataList = new ArrayList<String>();
private int picNum=0;
private boolean flag=true;
private String ceshitoken;
@Override
public void onClick(View view) {//点击事件
    switch (view.getId()) {
        case R.id.upload_img:
            dataList.add("/storage/emulated/0/相机/IMG_20181218_140934.jpg");//图片本地路径,要换成自己的
            dataList.add("/storage/emulated/0/相机/IMG_20181218_140932.jpg");//图片本地路径,要换成自己的
            dataList.add("/storage/emulated/0/相机/IMG_20181218_140929.jpg");//图片本地路径,要换成自己的
            dataList.add("/storage/emulated/0/相机/IMG_20181218_140926.jpg");//图片本地路径,要换成自己的

            if (flag == true) {
                qiuNiuYunToKen(dataList.get(picNum), dataList.size());
                flag = false;
            } else {
                Toast.makeText(this, "正在上传,请稍后...", Toast.LENGTH_LONG).show();
            }
            break;
    }
}
private void qiuNiuYunToKen(final String picUrl, final int picSize){
    final OkHttpClient okHttpClient = new OkHttpClient();
    //Form表单格式的参数传递
    FormBody formBody = new FormBody
            .Builder()
            .add("suffix","jpg")//设置参数名称和参数值
            .add("recordId","1")//设置参数名称和参数值
            .build();
    final Request request = new Request
            .Builder()
            .post(formBody)
            .url("后台的接口,接口里有token,也是最主要的")
            .build();
    new Thread(){
        @Override
        public void run() {
            super.run();
            try {
                Response response = okHttpClient.newCall(request).execute();
                String string = response.body().string();
                final QiNiuYunBean qiNiuYunBean = new Gson().fromJson(string, QiNiuYunBean.class);//QiNiuYunBean.class这是接口的bean类需要自己生成
               //Log.d("+++++++++++",qiNiuYunBean.getToken());
                ceshitoken=qiNiuYunBean.getToken();//请求完接口获取到的token值
                Log.d(TAG, "++++++++ceshitoken"+ceshitoken);
                // return qiNiuYunBean.getToken();
                Log.d(TAG,"++++++picNum="+picNum);
                Log.d(TAG,"++++++picSize="+picSize);
                Log.d(TAG,"++++++picUrl="+picUrl);
                UploadManager uploadManager = new UploadManager();
                // 设置图片名字
                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
                String key = "icon_" + sdf.format(new Date());
                String picPath = picUrl;
                Log.i(TAG, "picPath: " + picPath);
                Log.d(TAG,"+++++++++++"+ceshitoken);
                uploadManager.put(picPath, key,ceshitoken, new UpCompletionHandler() {
                    @Override
                    public void complete(String key, ResponseInfo info, JSONObject res) {
                        // info.error中包含了错误信息,可打印调试
                        // 上传成功后将key值上传到自己的服务器  到这里已经上传一张图片到七牛云上了,下面是递归回调上传多张图片
                        if (info.isOK()) {
                            Log.i(TAG, "token===" + ceshitoken);
                            //http://ot6991tvl.bkt.clouddn.com
                            String headpicPath = "接口里有一个公司地址参数,放到这就可以了,我这里直接把公司地址放到这里,没用接口里的,只有和接口里的地址一样就行;当然接口里的地址值要和在七牛云上注册的一致" + key;
                            Log.i(TAG, "complete: " + headpicPath);
                            picNum++;
                            if (picNum<picSize){
                                qiuNiuYunToKen(dataList.get(picNum),picSize);
                            }else {
                                picNum=0;
                                flag=true;
                                Toast.makeText(MainActivity.this,"上传成功",Toast.LENGTH_LONG).show();
                                return;
                            }

                        }

                    }
                }, null);

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }.start();
}

猜你喜欢

转载自blog.csdn.net/wei844067872/article/details/85328120
今日推荐