本demo使用七牛上传来做的图片,视频上传.
别的先不说,先上效果图 , 不想看的也可以直接拖到最下面进入我的github下载,
第一步:
build.gradle里面导入:
compile ‘top.zibin:Luban:1.0.9’ //luban进行图片压缩
compile ‘com.android.support:design:25.3.1’
compile ‘com.qiniu:qiniu-android-sdk:7.2.+’//七牛
compile ‘me.iwf.photopicker:PhotoPicker:0.1.8’//图片选择
compile ‘cn.fanrunqi:waveprogress:1.0.1’//上传效果
第二步:
服务端对七牛进行集成并提供接口
如:String url = “http://112.74.28.179:8080/Chislim/Travel_notes_Servlet?dowhat=getUpLoadToken“;
代码里面对七牛上传进行初始化设置
//对七牛的初始化设置
private void initConfig() {
Configuration config = new Configuration.Builder()
.chunkSize(256 * 1024) //分片上传时,每片的大小。 默认256K
.putThreshhold(512 * 1024) // 启用分片上传阀值。默认512K
.connectTimeout(10) // 链接超时。默认10秒
.responseTimeout(60) // 服务器响应超时。默认60秒
// .recorder(recorder) // recorder分片上传时,已上传片记录器。默认null
// .recorder(recorder, keyGen) // keyGen 分片上传时,生成标识符,用于片记录器区分是那个文件的上传记录
.zone(Zone.zone0) // 设置区域,指定不同区域的上传域名、备用域名、备用IP。默认 Zone.zone0
.build();
// 重用uploadManager。一般地,只需要创建一个uploadManager对象
uploadManager = new UploadManager(config);
}
初始化七牛完毕后,点击按钮发送请求得到七牛的token并携带token进入发送说说的页面.
client.newCall(request).enqueue(new okhttp3.Callback() {
@Override
public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {
String token = response.body().string();
Log.i("七牛", token);
//第三步跳转至 发布说说页面
Intent intent = new Intent(MainActivity.this , PublishHumorActivity.class);
intent.putExtra("token" , token) ;
startActivityForResult(intent , GOTO_PUBLISH_HUMOR_REQUEST);
}
@Override
public void onFailure(okhttp3.Call call, IOException e) {
Log.i("七牛", e.getMessage());
}
});
第三步
建立bean对象,用来接受上传的信息
public class HumorImgAndVideoBean {
public String fileName =""; //文件名
public String path =""; // 本地路径
public String urlPath ="" ; //网络路径,上传时只需要上传这个给服务端存储.
public String compresPath="" ; //图片压缩过后的路径
public boolean isVideo ;//判断是否为视频
public int proess = 0 ; //上传的进度
}
第四步
构建布局文件,这个部分就不代码了哈…
构建给recyclerView的adapter
public class HumorImgAndVideoAdpter extends RecyclerView.Adapter {
private Context mContext ;
private List<HumorImgAndVideoBean> lists ;
private OnMyItemClick onMyItemClick ;
public