如何在Rail3App中使用Ruby在Active Directory中存储图片?

时间:2011-03-23 18:39:31

标签: ruby-on-rails ruby ruby-on-rails-3 active-directory ldap

我想要做的就是将图像上传到Active Directory中。到目前为止,我可以更新任何AD信息,但图像。我试图寻找一些想法但到目前为止没有提出任何想法。

我是否必须以某种方式对图像进行编码?我只是用照片的字节字符串替换jpegPhoto属性吗?

对解决方案的任何暗示都会很棒。

提前致谢!

2 个答案:

答案 0 :(得分:0)

首先,Active目录中有一个名为thumbnailPhoto的属性。根据{{​​3}},thumbNailPhoto属性包含八位字节字符串类型数据。 AD将八位字符串数据解释为字节数组。

如果您想在C#中使用示例代码,可以获得this Microsoft article

从理论的角度来看,你也可以使用像“B64”这样的工具为LDIF注入一张照片来编码你的图像文件。

其次,在我看来,目录不是数据库。 因此,即使该属性存在(由Netscape根据OID something here创建),即使Microsoft向我们解释如何将图片放入Active Directory,我认为注册URL或路径更好从文件系统到目录的文件。

如果我用40 Ko加载每个条目(缩略图照片的平均大小),我不知道对AD性能的影响。但是我知道如果网络上有糟糕的书面程序,我的意思是当它们在目录中搜索条目时加载所有属性的程序,这将大大加载网络。

我希望它有所帮助。

JP

答案 1 :(得分:0)

我遇到了这个问题,并且能够通过创建文件流并将其作为二进制文件传递给@ldap.replace_attribute来使其工作。即。

thumbnail_stream = open("path_to_file")
@ldap.replace_attribute USERS_DN, :thumbnailPhoto, File.binread(thumbnail_stream)

其中@ldapnet/ldap的实例,绑定到AD。即。

@ldap = Net::LDAP.new
@ldap.host = ''
@ldap.port = ''
@ldap.auth USERNAME, PASSWORD
@ldap.bind