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)
不起作用
我不知道这是正确的方法,我试图这样做。
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。
| 归档时间: |
|
| 查看次数: |
1760 次 |
| 最近记录: |