Retrofit上传文件到oss文件存储

复制代码
@Override
public Observable<BaseResp<UploadFileInfoResp>> getUploadFileUrl(UploadFileInfoReq uploadFileInfoReq) {
    return apiService.getUploadFileUrl(uploadFileInfoReq);
}
复制代码
@Override
public Observable<ResponseBody> uploadFileDirect(String url, Map<String, String> headers, RequestBody requestBody) {
    return apiService.uploadFileDirect(url, headers, requestBody);
}
复制代码
public class UploadFileInfoReq {
    public String fileName;
    public long fileSize;
    public boolean randomFileName;
    public String systemCode;
}
复制代码
public class UploadFileInfoResp {
    public long fileId;
    public String fileUrl;
    public String uploadUrl;
    public Map<String, String> headers;
}
复制代码
public void getUploadFileUrl(File file, UploadFileInfoReq uploadFileInfoReq) {
    dataRepository.getUploadFileUrl(uploadFileInfoReq)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .doOnSubscribe(this)
            .subscribe(new DisposableObserver<BaseResp<UploadFileInfoResp>>() {
                @Override
                public void onNext(@NonNull BaseResp<UploadFileInfoResp> response) {
                    if (response.code == BaseConstants.API_HANDLE_SUCCESS) {
                        uploadFileDirect(file, response.data);
                    }
                }

                @Override
                public void onError(@NonNull Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });
}
复制代码
public void uploadFileDirect(File file, UploadFileInfoResp uploadFileInfoResp) {

    RequestBody requestBody = RequestBody.create(file, MediaType.parse("image/png"));

    dataRepository.uploadFileDirect(uploadFileInfoResp.uploadUrl, uploadFileInfoResp.headers, requestBody)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .doOnSubscribe(this)
            .subscribe(new DisposableObserver<ResponseBody>() {
                @Override
                public void onNext(@NonNull ResponseBody response) {
                    Log.i("xxx", "------ done-");
                }

                @Override
                public void onError(@NonNull Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });

}
复制代码
topBarView.setOnSettingsClickListener(new TopBarView.OnSettingsItemClickListener() {
    @Override
    public void onClick(View view) {
        File file = new File(getExternalCacheDir().getAbsolutePath() + "/xxx.png");
        showToast("size=" + file.length());
        UploadFileInfoReq uploadFileInfoReq = new UploadFileInfoReq("TestFile", file.length(), "Test_File_001");
        viewModel.getUploadFileUrl(file, uploadFileInfoReq);
    }
});
相关推荐
pyz6662 天前
Retrofit 源码分析
android·retrofit
我命由我1234512 天前
Retrofit - URL 格式错误问题、支持 HTTP 与 HTTPS
java·http·https·java-ee·android studio·android-studio·retrofit
赏金术士1 个月前
Retrofit + Kotlin 协程(Android 实战教程)
android·kotlin·retrofit
帅次2 个月前
链路到端上:HTTPS 之后安全题还在考什么
android·okhttp·glide·zygote·retrofit
明天就是Friday2 个月前
Android实战项目② Retrofit+Hilt开发天气预报App 完整源码详解
android·retrofit
普通网友2 个月前
Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架
android·kotlin·retrofit
XiaoLeisj2 个月前
Android 短视频项目首页开发实战:从广场页广告轮播与网格列表,到发现页分类、播单与话题广场的数据驱动实现
android·okhttp·mvvm·recyclerview·retrofit·databinding·xbanner 轮播
番茄去哪了2 个月前
Retrofit框架调用第三方api
java·服务器·retrofit
常利兵3 个月前
从“新老交锋”看Retrofit与Ktor
retrofit
android_cai_niao3 个月前
Retrofit入门教程
retrofit