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);
    }
});

相关推荐

  1. Retrofit文件oss文件存储

    2023-12-15 05:16:07       36 阅读
  2. OSS文件、MinIO分布式文件存储系统

    2023-12-15 05:16:07       37 阅读
  3. 后端文件使用阿里云oss存储文件(图片)

    2023-12-15 05:16:07       16 阅读
  4. PHP实现阿里OSS文件

    2023-12-15 05:16:07       35 阅读
  5. 文件存储工具

    2023-12-15 05:16:07       47 阅读
  6. 文件传输——本地OSS

    2023-12-15 05:16:07       10 阅读
  7. gitee存储文件、下载文件

    2023-12-15 05:16:07       20 阅读
  8. React|创建txt文件oss指定地址

    2023-12-15 05:16:07       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 05:16:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 05:16:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 05:16:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 05:16:07       20 阅读

热门阅读

  1. SQL区间

    2023-12-15 05:16:07       38 阅读
  2. ClickHouse(17)ClickHouse集成JDBC表引擎详细解析

    2023-12-15 05:16:07       36 阅读
  3. CentOS 7入门指南

    2023-12-15 05:16:07       39 阅读
  4. 使用工具 NVM来管理不同版本的 Node.js启动vue项目

    2023-12-15 05:16:07       36 阅读
  5. 第一周:AI产品经理跳槽准备工作

    2023-12-15 05:16:07       41 阅读
  6. 【Qt5】Qt Creator中CMake的qt5_wrap_ui函数

    2023-12-15 05:16:07       27 阅读