如何使用Retrofit 2上传空白文件?

Vas*_*yov 1 rest file-upload retrofit

通过使用以下代码进行改造,我成功地将图像上传到了我的REST API:

        File imageFile = ImagePicker.getFileFromResult(this, resultCode, data);
        RequestBody requestFile =
                RequestBody.create(MediaType.parse("multipart/form-data"), imageFile);
        MultipartBody.Part body =
                MultipartBody.Part.createFormData("userpic", imageFile.getName(), requestFile);

        RetrofitClient.compositeSubscription.add(RetrofitClient.getService().updateProfileUserpic("Token " + RevolutionApp.getInstance().getUserToken(), body).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Profile>() {
                    @Override
                    public void onCompleted() { }

                    @Override
                    public void onError(Throwable e) { }

                    @Override
                    public void onNext(Profile profile) {
                        mProfileFragment.fetchProfileData();
                    }
                }));
Run Code Online (Sandbox Code Playgroud)

现在,我需要向我的API发送空文件(空)。如何执行呢?

MultipartBody.Part.createFormData("userpic", imageFile.getName(), requestFile)
Run Code Online (Sandbox Code Playgroud)

不起作用

Rgv*_*Rgv 5

我不知道这是正确的方法,我试图这样做。

MultipartBody.Part fileToUpload = null;
        if (realPath != null) {
            try {
                File file = new File(realPath);
                if (file.exists()) {
                    RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
                    fileToUpload = MultipartBody.Part.createFormData("attachment", file.getName(), requestBody);
                }
            } catch (NullPointerException e) {
                e.printStackTrace();
            }
        }else{
            RequestBody attachmentEmpty = RequestBody.create(MediaType.parse("text/plain"), "");

            fileToUpload = MultipartBody.Part.createFormData("attachment", "", attachmentEmpty);
        }
Run Code Online (Sandbox Code Playgroud)

注意:文件名不应为null,而应使用null(“”)代替null。