Как загрузить фотографию профиля в формате base64 для пользователей сообщества с помощью ConnectApi.UserProfiles.setPhoto

1Я загружаю фотографию профиля для пользователей сообщества в формате base64 с помощью ConnectApi.UserProfiles.setPhoto Метод. Но я получаю «ConnectApi.ConnectApiException: загруженный вами файл не является допустимым изображением». Эта ошибка, помогите мне решить эту проблему.


person Harish    schedule 07.02.2019    source источник


Ответы (2)


Привет, вы можете попробовать следующий метод:

public PageReference upload() {
    Blob b;
    document.AuthorId = UserInfo.getUserId();
    document.FolderId = UserInfo.getUserId(); // put it in running user's folder
    try {
        document.type = 'jpg';
        document.IsPublic = true;
        insert document;
        // ImageId = '06990000001HnuB';
        b = document.Body;
        //ConnectApi.ChatterUsers newPhoto = new ConnectApi.ChatterUsers();
    } catch (DMLException e) {
        ApexPages.addMessage(new ApexPages.message(ApexPages.severity.ERROR, 'Error uploading file'));
        return null;
    } finally {
        document.body = null; // clears the viewstate
        document = new Document();
    }
    ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO, 'File uploaded successfully : ' + b));
    String communityId = null;
    String userId = UserInfo.getUserId();
    //ID fileId = ImageId;
    // Set photo
    ConnectApi.Photo photo = ConnectApi.ChatterUsers.setPhoto(communityId, userId, new ConnectApi.BinaryInput(b, 'image/jpg', 'userImage.jpg'));
    return null;
}
person Dhairya Shah    schedule 17.02.2019
comment
Этот пост представляет собой ответ на дамп кода, в котором вы предоставляете только код и не предлагаете никаких дополнительных объяснений того, как он решает проблему. Ваш пост будет улучшен, например, если вы объясните, что такое ключевой функционал. - person MJ12358; 13.03.2020
comment
Кроме того, код в его текущем состоянии не компилируется. Вы не объявили переменную 'document'. - person MJ12358; 13.03.2020

Я получал ту же ошибку, подробностей не так много, поэтому я не слишком уверен в вашей проблеме. Я решил проблему, используя приведенный ниже код. Измените по мере необходимости.

public static Boolean updateUserProfilePic(String userProfilePicString, String userId, String fileType){
Boolean updateSuccessful = true;

System.debug('-------------' + userProfilePicString.length());
try{
    Blob blobImage = EncodingUtil.base64Decode(userProfilePicString);

    ConnectApi.BinaryInput fileUpload = new ConnectApi.BinaryInput(blobImage, 'image/jpg', 'userImage.jpg');
    ConnectApi.Photo photoProfile = ConnectApi.UserProfiles.setPhoto(null, userId,  fileUpload);
}
catch(Exception exc){
    updateSuccessful = false;
}

return updateSuccessful;

}

person user13011442    schedule 05.03.2020