LDAP binary字段读取

今天做LDAP发布图片,用binary属性存储。存储没有问题,但是读取时发现字段变成String形式并且内容是乱码,怎么转换都不能解决。

最后度了下发现

       默认情况下Attribute#get()返回的属性值的格式都是字符串类型的,如果想指定某属性的格式为字节数组类型(比如某属性可能在活动目录中存储的是图片、Word等二进制文件,那么返回字节数组类型会特别合适),需要事先在查找的上下文环境中指定:默认情况下Attribute#get()返回的属性值的格式都是字符串类型的,如果想指定某属性的格式为字节数组类型(比如某属性可能在活动目录中存储的是图片、Word等二进制文件,那么返回字节数组类型会特别合适),需要事先在查找的上下文环境中指定:

增加如 env.put("java.naming.ldap.attributes.binary","aaaa");//aa是你的binary字段名。

          Context cxt = new InitialLdapContext(env,null)

另外:

 还有一个小问题,如果连接Ldap服务器的PROVIDER_URL中服务器与端口之外的路径含有中文,则需要事先使用java.net.URLEncoder进行编码,例如:

  1. String baseDN=URLEncoder.encode("ou=软件应用事业部,ou=OrgTree,dc=cattsoft,dc=com""utf-8");  
  2. env.put(Context.PROVIDER_URL, "ldap://192.168.123.8:389/"+baseDN);  

参考:

http://zuiyanwangyue.iteye.com/blog/911649

原文地址:https://www.cnblogs.com/wts/p/3197060.html