0

OpenDJ コントロール パネルを使用してユーザーに画像を追加しましたが、その画像を取得できないようで、Web ページに表示できません。私は2つの属性thumbnailPicturephotoを見つけ、次の方法でアクセスしようとしました:

NamingEnumeration<?> namingEnum = ctx.search(baseFilter, "(uid="+username+")", searchControls);

                if (namingEnum.hasMore ()){
                    SearchResult result = (SearchResult) namingEnum.next ();    
                    Attributes attrs = result.getAttributes ();
                    photo=(String)attrs.get("thumbnailPicture").get() ;
                }

たとえば、変更時にメールアドレスを取得できるため、コードに問題はありませんphoto=(String)attrs.get("thumbnailPicture").get() ;

photo=(String)attrs.get("mail").get() ;

OpenDJ コントロール パネルから画像を追加すると、参照ボタンを介して移動することに気付きました。パスをどこかに保存する必要があるのではないでしょうか?

エラーメッセージは表示されませんが(OpenDJでthumbnailPicturephotoの属性が入力されていないため、空が返されるためだと思います)、私が望むのは次のとおりです。

  • 画像が保存されている場所へのパスですが、OpenDJ が実際にこの情報を保存しているのは推測にすぎませんか?
  • 画像を取得する可能性がありますが、OpenDJ に保存されているものについてはわかりません。このコードは、ファイルのパスを対象としています (そのため、String へのキャストがあります)。
4

4 に答える 4

1

jpegPhoto属性を尋ねる必要があると思いますか?

于 2015-07-31T22:21:30.677 に答える
0

以下のコードを使用して、thumbnailPhoto をファイルに書き込みます

    NamingEnumeration<SearchResult> results = ctx.search(base, filter, sc);
    // while (results.hasMore()) {
    SearchResult sr = (SearchResult) results.next();
    Attributes attrs = sr.getAttributes();
    Attribute attr = attrs.get("thumbnailPhoto"); 
  
    byte[] image =(byte[]) attr.get();       

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
   ObjectOutputStream out = new ObjectOutputStream(bos) ;
   out.writeObject(result);

    Path path = Paths.get("output.jpg");
    try {
        Files.write(path,  image);    // Java 7+ only
        System.out.println("Successfully written data to the file");
    }
    catch (IOException e) {
        e.printStackTrace();
    }
于 2021-09-23T16:10:52.930 に答える