[英]How to send image object to server using retrofit in android
我正在使用改造功能更新我的個人資料圖片。 我必須發送圖像對象和當前登錄用戶ID,這是我的代碼...
private void uploadProfileImage(){
uid = DatabaseUtil.getInstance().getUser().getProfile().getUmeta().getId();
mRegProgress.setTitle("Updating profile Image");
mRegProgress.setMessage("Please wait...");
mRegProgress.setCanceledOnTouchOutside(false);
mRegProgress.show();
File profile_image_file = new File(mediaPath);
RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), profile_image_file);
MultipartBody.Part profile_image = MultipartBody.Part.createFormData("file", profile_image_file.getName(), requestBody);
Call<ResponseBody> call = RetrofitClient.getInstance().getApi().uploadProfile(uid , profile_image);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.code() == 200){
mRegProgress.hide();
String s = response.body().toString();
pDialog = new SweetAlertDialog(getActivity(), SweetAlertDialog.SUCCESS_TYPE);
pDialog.setTitleText("Good job!");
pDialog.setContentText("Profile image successfully!");
pDialog.show();
}else if (response.code() == 203){
Toast.makeText(getActivity() , "Image upload Error" , Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
}
});
}
我也正在使用此代碼...
case SELECT_PROFILE_PIC:
if (resultCode == RESULT_OK) {
// Get the Image from data
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
assert cursor != null;
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
mediaPath = cursor.getString(columnIndex);
// Set the Image in ImageView for Previewing the Media
dd_profile_view.setImageBitmap(BitmapFactory.decodeFile(mediaPath));
cursor.close();
uploadProfileImage();
}
break;
但是圖像沒有更新...我在開機自檢人上嘗試過api,它正在正確更新配置文件圖片...請告訴我問題是什么,我該如何解決它,謝謝
這是我的api
調用。
@Multipart
@POST("media/upload-media")
Call<ResponseBody> uploadProfile(
@Query("id") String id,
@Part MultipartBody.Part profile_image
);
嘗試使用@Part
代替@Query
@Multipart
@POST("media/upload-media")
Call<ResponseBody> uploadProfile(
@Part("id") RequestBody id,
@Part MultipartBody.Part profile_image
);
更換
RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), profile_image_file);
與:
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), profile_image_file);
您可以點擊此鏈接獲取完整說明,並在此處輸入鏈接說明
請在下面更新
RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), profile_image_file);
MultipartBody.Part profile_image = MultipartBody.Part.createFormData("file", profile_image_file.getName(), requestBody);
代替這個
RequestBody requestBody= RequestBody.create(MediaType.parse("image/*"), profile_image_file);
MultipartBody.Part profile_image = MultipartBody.Part.createFormData("file", profile_image_file.getName(), requestBody);
RequestBody uid= RequestBody.create(MediaType.parse("text/plain"), uid);
並確保使用@part而不是此@Query
@Multipart
@POST("media/upload-media")
Call<ResponseBody> uploadProfile(
@Part("id") RequestBody id,
@Part MultipartBody.Part profile_image
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.