版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
}