gpt4 book ai didi

android - 如何使用 Retrofit Android 上传图片?

转载 作者:行者123 更新时间:2023-11-30 00:42:32 26 4
gpt4 key购买 nike

我有一个像这样使用 Retrofit 请求上传图片的功能

void uploadPhoto(File file) {
RequestBody photo = RequestBody.create(MediaType.parse("application/image"), file);
RequestBody body = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("photo", file.getName(), photo)
.build();

fragment.showProgressDialog(fragment.loading);
fragment.getApi().uploadPhoto(PrefHelper.getString(PrefKey.TOKEN), body)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Observer<GenericResponse>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {
fragment.dismissProgressDialog();
Timber.e(e.getMessage());
}

@Override
public void onNext(GenericResponse response) {
fragment.dismissProgressDialog();

if (response.getCode() == 1) {
fragment.showSuccessDialog("Saving success", false);
userInfo();
}

}
});
}

例如,我的 fragment 中有一个上传图片的按钮

  @OnClick(R.id.btnChangePicture)
void onChangePictureClicked() {

}

我应该输入什么代码

OnChangePictureClicked

这样我就可以从图库中选择一张图片,然后向 API 请求它。

void uploadPhoto(File file)

谢谢

最佳答案

将您的图像转换为字节数组,然后像下面的示例一样创建一个 Object Dto,并通过 Retrofit 将其发送到服务器。

@Data
public class SetProfileImageRequestDto {
@SerializedName("Token")
private String token;

@SerializedName("Stream")
private byte[] image;

改造 API 服务:

    @POST("SetProfileImage/")
Observable<ResultResponseDto> setProfileImage(@Body SetProfileImageRequestDto profileImageRequestDto);

希望它有用。

关于android - 如何使用 Retrofit Android 上传图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42338130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com