Grails 使用Groovy从OpenLDAP服务器读取和保存二进制图像
我正在尝试从OpenLDAP服务器保存一个映像。它是二进制格式的,我所有的代码看起来都正常工作,但是,图像被破坏了 然后,我尝试在PHP中实现这一点,并获得了成功,但我希望在Grails项目中实现这一点 PHP示例(有效) 我如何告诉ApacheLDAP库“image jpeg”实际上是二进制的而不是字符串?是否有更好的简单库可用于从LDAP服务器读取二进制数据?通过查看Apache邮件列表,但我在线程中找不到解决方案 技术堆栈Grails 使用Groovy从OpenLDAP服务器读取和保存二进制图像,grails,groovy,ldap,apacheds,Grails,Groovy,Ldap,Apacheds,我正在尝试从OpenLDAP服务器保存一个映像。它是二进制格式的,我所有的代码看起来都正常工作,但是,图像被破坏了 然后,我尝试在PHP中实现这一点,并获得了成功,但我希望在Grails项目中实现这一点 PHP示例(有效) 我如何告诉ApacheLDAP库“image jpeg”实际上是二进制的而不是字符串?是否有更好的简单库可用于从LDAP服务器读取二进制数据?通过查看Apache邮件列表,但我在线程中找不到解决方案 技术堆栈 def ldap = org.apache.directory.g
def ldap = org.apache.directory.groovyldap.LDAP.newInstance('ldap://ldap.example.com/ou=People,o=Acme')
ldap.eachEntry (filter: 'someID=123456789') { entry ->
new File('/Some/dir/123456789.jpg').withOutputStream {
it.write entry.get('someimage-jpeg').getBytes() // File is created, but image is corrupted (size also doesn't match the PHP version)
}
}
- Grails2.2.1
- 创建一个名为“jndi.properties”的新属性文件,并将其添加到grails app/conf目录中(此文件夹中的所有属性文件都自动包含在类路径中)
- 在属性文件中添加一行图像变量的名称:
java.naming.ldap.attributes.binary=some\u custom\u image
- 保存文件并运行Grails应用程序
def ldap = LDAP.newInstance('ldap://some.server.com/ou=People,o=Acme')
ldap.eachEntry (filter: 'id=1234567') { entry ->
new File('/var/dir/something.jpg').withOutputStream {
it.write entry.image
}
}
我包含了上面的PHP代码,以表明它确实是二进制的,而不是Base64编码的。好建议。
def ldap = LDAP.newInstance('ldap://some.server.com/ou=People,o=Acme')
ldap.eachEntry (filter: 'id=1234567') { entry ->
new File('/var/dir/something.jpg').withOutputStream {
it.write entry.image
}
}