2015-07-31 8 views
0

Я добавил фотографию пользователю через панель управления OpenDJ, но я не могу получить эту картинку, чтобы показать ее на веб-странице. Я нашел два атрибута thumbnailPicture и фото и попытался к нему доступ следующим образом:Загрузить изображение из OpenDJ ldap через Java

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() ; 
       } 

С кодом нет ничего плохого, потому что я могу получить по электронной почте ADRES, например, когда я меняю photo=(String)attrs.get("thumbnailPicture").get() ;

в

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

я заметил, что при добавлении изображения throu gh Панель управления OpenDJ идет через кнопку обзора, поэтому я предполагаю, что путь должен храниться где-нибудь?

Я не получаю никаких сообщений об ошибках (я предполагаю, потому что атрибуты thumbnailPicture и фото не заполняются в OpenDJ так они возвращаются пустыми), но то, что я хотел бы это:

  • путь к тому, где сохраняется изображение, но это просто предположение, что OpenDJ действительно хранит эту информацию?
  • возможность получить изображение, но я не уверен, что он сохраняется в OpenDJ. Теперь код предназначен для пути к файлу (вот почему есть строка для String).
+0

Я озадачен ваше упоминание «thumbnailPicture и фото» в тексте, но код показывает «thumbnailPhoto»? – JnRouvignac

+0

Также вы используете JNDI. Почему вы не используете более современный OpenDJ SDK? – JnRouvignac

+0

@JnRouvignac JNDI работает, почему бы вам не использовать его? Протокол LDAP не изменился. – EJP

ответ

1

Я думаю, вам может потребоваться указать атрибут jpegPhoto?

1

В каталоге не сохраняется путь к изображению. Он сохраняет изображение.

Вы не удосужились упомянуть то, что сообщение об ошибке вы получаете, или как далеко вы на самом деле попасть в этот код, что делает окончательный ответ невозможно, но атрибуты фото возвращаются как массив байтов, а не строки, таким образом:

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

Если результат не имеет такого атрибута, attrs.get("thumbnailPicture") возвратит нуль, так что следующий .get() бы бросить NullPointerException. Если бы у него был такой атрибут и значение для него, вы получили бы ClassCastException от попытки сделать byte[] до String.. Единственный вывод, что эта строка кода не выполняется, поэтому photo остается прежним, предположительно null, который затем вызывает любое поведение, которое вы наблюдаете, о котором вы не сказали нам, несмотря на многочисленные запросы.

+0

Я не получаю сообщение об ошибке, иначе я бы добавил его! Мне нужен путь к файлу, чтобы строка была правильной? – Noosrep

+0

Содержание атрибута - это двоичное изображение, а не путь. Вы все еще не указали, какова ваша фактическая проблема. – EJP

+0

Обновлен вопрос в надежде, что теперь это яснее – Noosrep

0

для пользователя изображения, там существует несколько атрибутов:

  1. thumbnailphoto (специально сюда Active Directory)
  2. jpegPhoto
  3. и фото

так используют следующие коды:

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

или,

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

 Смежные вопросы

  • Нет связанных вопросов^_^