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);
    }
});
相关推荐
安果移不动7 天前
Android 架构进化之路:为何在 Retrofit + 协程重构中,我们需要引入 Hilt?
android·架构·retrofit
咨询QQ1808095111 天前
双闭环Vienna整流器SVPWM控制:大功率直流800V以上MATLAB Simulink仿...
retrofit
灰什么鱼12 天前
OkHttp + Retrofit2 调用第三方接口完整教程(以nomad为例)
java·spring boot·okhttp·retrofit
Jeled2 个月前
Retrofit 与 OkHttp 全面解析与实战使用(含封装示例)
android·okhttp·android studio·retrofit
Jeled2 个月前
Android 网络层最佳实践:Retrofit + OkHttp 封装与实战
android·okhttp·kotlin·android studio·retrofit
whltaoin2 个月前
Java 网络请求 Jar 包选型指南:从基础到实战
java·http·okhttp·网络请求·retrofit
袁震3 个月前
Android-kotlin MVVM框架搭建+Retrofit二次封装
android·kotlin·mvvm·retrofit
智_永无止境3 个月前
告别繁琐配置!Retrofit-Spring-Boot-Starter让HTTP调用更优雅
retrofit
Mr YiRan3 个月前
Android模拟简单的网络请求框架Retrofit实现
android·retrofit
Bryce李小白5 个月前
Kotlin实现Retrofit风格的网络请求封装
网络·kotlin·retrofit