How to update user profile photo with msgraph-sdk-java?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















Here is what I have so far:



    ProfilePhoto photo = new ProfilePhoto();
photo.???


IProfilePhotoRequest request = graphServiceClient.users(userId).photo().buildRequest();
request.patch(photo, new ICallback<ProfilePhoto>(){
@Override
public void success(final ProfilePhoto result) {

}

@Override
public void failure(ClientException e) {

}
});


However I don't know how to set the 'Binary data for the image':



PUT https://graph.microsoft.com/v1.0/me/photo/$value
Content-type: image/jpeg



Binary data for the image










share|improve this question





























    0















    Here is what I have so far:



        ProfilePhoto photo = new ProfilePhoto();
    photo.???


    IProfilePhotoRequest request = graphServiceClient.users(userId).photo().buildRequest();
    request.patch(photo, new ICallback<ProfilePhoto>(){
    @Override
    public void success(final ProfilePhoto result) {

    }

    @Override
    public void failure(ClientException e) {

    }
    });


    However I don't know how to set the 'Binary data for the image':



    PUT https://graph.microsoft.com/v1.0/me/photo/$value
    Content-type: image/jpeg



    Binary data for the image










    share|improve this question

























      0












      0








      0


      0






      Here is what I have so far:



          ProfilePhoto photo = new ProfilePhoto();
      photo.???


      IProfilePhotoRequest request = graphServiceClient.users(userId).photo().buildRequest();
      request.patch(photo, new ICallback<ProfilePhoto>(){
      @Override
      public void success(final ProfilePhoto result) {

      }

      @Override
      public void failure(ClientException e) {

      }
      });


      However I don't know how to set the 'Binary data for the image':



      PUT https://graph.microsoft.com/v1.0/me/photo/$value
      Content-type: image/jpeg



      Binary data for the image










      share|improve this question














      Here is what I have so far:



          ProfilePhoto photo = new ProfilePhoto();
      photo.???


      IProfilePhotoRequest request = graphServiceClient.users(userId).photo().buildRequest();
      request.patch(photo, new ICallback<ProfilePhoto>(){
      @Override
      public void success(final ProfilePhoto result) {

      }

      @Override
      public void failure(ClientException e) {

      }
      });


      However I don't know how to set the 'Binary data for the image':



      PUT https://graph.microsoft.com/v1.0/me/photo/$value
      Content-type: image/jpeg



      Binary data for the image







      microsoft-graph






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 23 '18 at 16:54









      StackMonkeyStackMonkey

      275




      275
























          1 Answer
          1






          active

          oldest

          votes


















          0














          You need to use BaseProfilePhotoStreamRequest but not the one in your code. Such thing like:



          IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest();
          request.put(imageBytes);


          Reference Code to get image binary:



          import java.awt.image.BufferedImage;   
          import java.io.ByteArrayInputStream;
          import java.io.ByteArrayOutputStream;
          import java.io.File;
          import java.io.IOException;

          import javax.imageio.ImageIO;

          import sun.misc.BASE64Decoder;
          import sun.misc.BASE64Encoder;

          public class TestImageBinary {
          static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
          static BASE64Decoder decoder = new sun.misc.BASE64Decoder();

          public static void main(String args) {
          System.out.println(getImageBinary());

          base64StringToImage(getImageBinary());
          }

          static String getImageBinary(){
          File f = new File("c://20090709442.jpg");
          BufferedImage bi;
          try {
          bi = ImageIO.read(f);
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          ImageIO.write(bi, "jpg", baos);
          byte bytes = baos.toByteArray();

          return encoder.encodeBuffer(bytes).trim();
          } catch (IOException e) {
          e.printStackTrace();
          }
          return null;
          }
          }





          share|improve this answer


























          • That is a great start, thank you for the suggestion. Could you be more specific about IBaseProfilePhotoStreamRequest? I am good with encoding the image, what I am having trouble with is figuring out how to make the request using the SDK.

            – StackMonkey
            Nov 26 '18 at 5:23













          • @user3026344 The code has been modified and may still require some minor adjustments

            – Seiya Su
            Nov 27 '18 at 9:00











          • Ah, something isn't right. So there is no getContent(), instead, there is content(). Also, this fails IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest(); request.put(imageBytes); with a cast exception where BufferedInputStream can't be cast to ProfilePhoto

            – StackMonkey
            Dec 10 '18 at 22:32














          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450467%2fhow-to-update-user-profile-photo-with-msgraph-sdk-java%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          You need to use BaseProfilePhotoStreamRequest but not the one in your code. Such thing like:



          IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest();
          request.put(imageBytes);


          Reference Code to get image binary:



          import java.awt.image.BufferedImage;   
          import java.io.ByteArrayInputStream;
          import java.io.ByteArrayOutputStream;
          import java.io.File;
          import java.io.IOException;

          import javax.imageio.ImageIO;

          import sun.misc.BASE64Decoder;
          import sun.misc.BASE64Encoder;

          public class TestImageBinary {
          static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
          static BASE64Decoder decoder = new sun.misc.BASE64Decoder();

          public static void main(String args) {
          System.out.println(getImageBinary());

          base64StringToImage(getImageBinary());
          }

          static String getImageBinary(){
          File f = new File("c://20090709442.jpg");
          BufferedImage bi;
          try {
          bi = ImageIO.read(f);
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          ImageIO.write(bi, "jpg", baos);
          byte bytes = baos.toByteArray();

          return encoder.encodeBuffer(bytes).trim();
          } catch (IOException e) {
          e.printStackTrace();
          }
          return null;
          }
          }





          share|improve this answer


























          • That is a great start, thank you for the suggestion. Could you be more specific about IBaseProfilePhotoStreamRequest? I am good with encoding the image, what I am having trouble with is figuring out how to make the request using the SDK.

            – StackMonkey
            Nov 26 '18 at 5:23













          • @user3026344 The code has been modified and may still require some minor adjustments

            – Seiya Su
            Nov 27 '18 at 9:00











          • Ah, something isn't right. So there is no getContent(), instead, there is content(). Also, this fails IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest(); request.put(imageBytes); with a cast exception where BufferedInputStream can't be cast to ProfilePhoto

            – StackMonkey
            Dec 10 '18 at 22:32


















          0














          You need to use BaseProfilePhotoStreamRequest but not the one in your code. Such thing like:



          IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest();
          request.put(imageBytes);


          Reference Code to get image binary:



          import java.awt.image.BufferedImage;   
          import java.io.ByteArrayInputStream;
          import java.io.ByteArrayOutputStream;
          import java.io.File;
          import java.io.IOException;

          import javax.imageio.ImageIO;

          import sun.misc.BASE64Decoder;
          import sun.misc.BASE64Encoder;

          public class TestImageBinary {
          static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
          static BASE64Decoder decoder = new sun.misc.BASE64Decoder();

          public static void main(String args) {
          System.out.println(getImageBinary());

          base64StringToImage(getImageBinary());
          }

          static String getImageBinary(){
          File f = new File("c://20090709442.jpg");
          BufferedImage bi;
          try {
          bi = ImageIO.read(f);
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          ImageIO.write(bi, "jpg", baos);
          byte bytes = baos.toByteArray();

          return encoder.encodeBuffer(bytes).trim();
          } catch (IOException e) {
          e.printStackTrace();
          }
          return null;
          }
          }





          share|improve this answer


























          • That is a great start, thank you for the suggestion. Could you be more specific about IBaseProfilePhotoStreamRequest? I am good with encoding the image, what I am having trouble with is figuring out how to make the request using the SDK.

            – StackMonkey
            Nov 26 '18 at 5:23













          • @user3026344 The code has been modified and may still require some minor adjustments

            – Seiya Su
            Nov 27 '18 at 9:00











          • Ah, something isn't right. So there is no getContent(), instead, there is content(). Also, this fails IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest(); request.put(imageBytes); with a cast exception where BufferedInputStream can't be cast to ProfilePhoto

            – StackMonkey
            Dec 10 '18 at 22:32
















          0












          0








          0







          You need to use BaseProfilePhotoStreamRequest but not the one in your code. Such thing like:



          IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest();
          request.put(imageBytes);


          Reference Code to get image binary:



          import java.awt.image.BufferedImage;   
          import java.io.ByteArrayInputStream;
          import java.io.ByteArrayOutputStream;
          import java.io.File;
          import java.io.IOException;

          import javax.imageio.ImageIO;

          import sun.misc.BASE64Decoder;
          import sun.misc.BASE64Encoder;

          public class TestImageBinary {
          static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
          static BASE64Decoder decoder = new sun.misc.BASE64Decoder();

          public static void main(String args) {
          System.out.println(getImageBinary());

          base64StringToImage(getImageBinary());
          }

          static String getImageBinary(){
          File f = new File("c://20090709442.jpg");
          BufferedImage bi;
          try {
          bi = ImageIO.read(f);
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          ImageIO.write(bi, "jpg", baos);
          byte bytes = baos.toByteArray();

          return encoder.encodeBuffer(bytes).trim();
          } catch (IOException e) {
          e.printStackTrace();
          }
          return null;
          }
          }





          share|improve this answer















          You need to use BaseProfilePhotoStreamRequest but not the one in your code. Such thing like:



          IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest();
          request.put(imageBytes);


          Reference Code to get image binary:



          import java.awt.image.BufferedImage;   
          import java.io.ByteArrayInputStream;
          import java.io.ByteArrayOutputStream;
          import java.io.File;
          import java.io.IOException;

          import javax.imageio.ImageIO;

          import sun.misc.BASE64Decoder;
          import sun.misc.BASE64Encoder;

          public class TestImageBinary {
          static BASE64Encoder encoder = new sun.misc.BASE64Encoder();
          static BASE64Decoder decoder = new sun.misc.BASE64Decoder();

          public static void main(String args) {
          System.out.println(getImageBinary());

          base64StringToImage(getImageBinary());
          }

          static String getImageBinary(){
          File f = new File("c://20090709442.jpg");
          BufferedImage bi;
          try {
          bi = ImageIO.read(f);
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          ImageIO.write(bi, "jpg", baos);
          byte bytes = baos.toByteArray();

          return encoder.encodeBuffer(bytes).trim();
          } catch (IOException e) {
          e.printStackTrace();
          }
          return null;
          }
          }






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 27 '18 at 8:59

























          answered Nov 25 '18 at 22:07









          Seiya SuSeiya Su

          1,4471210




          1,4471210













          • That is a great start, thank you for the suggestion. Could you be more specific about IBaseProfilePhotoStreamRequest? I am good with encoding the image, what I am having trouble with is figuring out how to make the request using the SDK.

            – StackMonkey
            Nov 26 '18 at 5:23













          • @user3026344 The code has been modified and may still require some minor adjustments

            – Seiya Su
            Nov 27 '18 at 9:00











          • Ah, something isn't right. So there is no getContent(), instead, there is content(). Also, this fails IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest(); request.put(imageBytes); with a cast exception where BufferedInputStream can't be cast to ProfilePhoto

            – StackMonkey
            Dec 10 '18 at 22:32





















          • That is a great start, thank you for the suggestion. Could you be more specific about IBaseProfilePhotoStreamRequest? I am good with encoding the image, what I am having trouble with is figuring out how to make the request using the SDK.

            – StackMonkey
            Nov 26 '18 at 5:23













          • @user3026344 The code has been modified and may still require some minor adjustments

            – Seiya Su
            Nov 27 '18 at 9:00











          • Ah, something isn't right. So there is no getContent(), instead, there is content(). Also, this fails IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest(); request.put(imageBytes); with a cast exception where BufferedInputStream can't be cast to ProfilePhoto

            – StackMonkey
            Dec 10 '18 at 22:32



















          That is a great start, thank you for the suggestion. Could you be more specific about IBaseProfilePhotoStreamRequest? I am good with encoding the image, what I am having trouble with is figuring out how to make the request using the SDK.

          – StackMonkey
          Nov 26 '18 at 5:23







          That is a great start, thank you for the suggestion. Could you be more specific about IBaseProfilePhotoStreamRequest? I am good with encoding the image, what I am having trouble with is figuring out how to make the request using the SDK.

          – StackMonkey
          Nov 26 '18 at 5:23















          @user3026344 The code has been modified and may still require some minor adjustments

          – Seiya Su
          Nov 27 '18 at 9:00





          @user3026344 The code has been modified and may still require some minor adjustments

          – Seiya Su
          Nov 27 '18 at 9:00













          Ah, something isn't right. So there is no getContent(), instead, there is content(). Also, this fails IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest(); request.put(imageBytes); with a cast exception where BufferedInputStream can't be cast to ProfilePhoto

          – StackMonkey
          Dec 10 '18 at 22:32







          Ah, something isn't right. So there is no getContent(), instead, there is content(). Also, this fails IBaseProfilePhotoStreamRequest request = graphServiceClient.users(userId).photo().getContent().buildRequest(); request.put(imageBytes); with a cast exception where BufferedInputStream can't be cast to ProfilePhoto

          – StackMonkey
          Dec 10 '18 at 22:32






















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450467%2fhow-to-update-user-profile-photo-with-msgraph-sdk-java%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()