簡體   English   中英

如何使用Android中的改造將圖像對象發送到服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM