package com.lzy.demo.okrx;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.lzy.demo.R;
import com.lzy.demo.base.BaseRxDetailActivity;
import com.lzy.demo.ui.NumberProgressBar;
import com.lzy.demo.utils.GlideImageLoader;
import com.lzy.demo.utils.Urls;
import com.lzy.imagepicker.ImagePicker;
import com.lzy.imagepicker.bean.ImageItem;
import com.lzy.imagepicker.ui.ImageGridActivity;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.convert.StringConvert;
import com.lzy.okrx.RxAdapter;
import java.io.File;
import java.util.ArrayList;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.functions.Action1;
public class RxFormUploadActivity extends BaseRxDetailActivity {
@Bind(R.id.formUpload) Button btnFormUpload;
@Bind(R.id.downloadSize) TextView tvDownloadSize;
@Bind(R.id.tvProgress) TextView tvProgress;
@Bind(R.id.netSpeed) TextView tvNetSpeed;
@Bind(R.id.pbProgress) NumberProgressBar pbProgress;
@Bind(R.id.images) TextView tvImages;
private ArrayList<ImageItem> imageItems;
@Override
protected void onActivityCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_form_upload);
ButterKnife.bind(this);
setTitle("文件上传");
}
@Override
protected void onDestroy() {
super.onDestroy();
//Activity销毁时,取消网络请求
unSubscribe();
}
@OnClick(R.id.selectImage)
public void selectImage(View view) {
ImagePicker imagePicker = ImagePicker.getInstance();
imagePicker.setImageLoader(new GlideImageLoader());
imagePicker.setMultiMode(true); //多选
imagePicker.setShowCamera(true); //显示拍照按钮
imagePicker.setSelectLimit(9); //最多选择9张
imagePicker.setCrop(false); //不进行裁剪
Intent intent = new Intent(this, ImageGridActivity.class);
startActivityForResult(intent, 100);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
if (data != null && requestCode == 100) {
imageItems = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);
if (imageItems != null && imageItems.size() > 0) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < imageItems.size(); i++) {
if (i == imageItems.size() - 1) sb.append("图片").append(i + 1).append(" : ").append(imageItems.get(i).path);
else sb.append("图片").append(i + 1).append(" : ").append(imageItems.get(i).path).append("\n");
}
tvImages.setText(sb.toString());
} else {
tvImages.setText("--");
}
} else {
Toast.makeText(this, "没有选择图片", Toast.LENGTH_SHORT).show();
tvImages.setText("--");
}
}
}
@OnClick(R.id.formUpload)
public void formUpload(View view) {
ArrayList<File> files = new ArrayList<>();
if (imageItems != null && imageItems.size() > 0) {
for (int i = 0; i < imageItems.size(); i++) {
files.add(new File(imageItems.get(i).path));
}
}
//拼接参数
OkGo.post(Urls.URL_FORM_UPLOAD)//
.tag(this)//
.headers("header1", "headerValue1")//
.headers("header2", "headerValue2")//
.params("param1", "paramValue1")//
.params("param2", "paramValue2")//
// .params("file1",new File("文件路径")) //这种方式为一个key,对应一个文件
// .params("file2",new File("文件路径"))
// .params("file3",new File("文件路径"))
.addFileParams("file", files) // 这种方式为同一个key,上传多个文件
.getCall(StringConvert.create(), RxAdapter.<String>create())//
.doOnSubscribe(new Action0() {
@Override
public void call() {
btnFormUpload.setText("正在上传中...\n使用Rx方式做进度监听稍显麻烦,推荐使用回调方式");
}
})//
.observeOn(AndroidSchedulers.mainThread())//切换到主线程
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
btnFormUpload.setText("上传完成");
handleResponse(s, null, null);
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
throwable.printStackTrace();
btnFormUpload.setText("上传出错");
showToast("请求失败");
handleError(null, null);
}
});
}
}