NodeJS + ldapsj-客户端:保存缩略图照片时出现问题

brtdzjyr  于 2023-03-12  发布在  Node.js
关注(0)|答案(1)|浏览(142)

我尝试使用ldapsj-client模块将thumbnailPhoto保存到文件中

const auth = async () => {

    const client = new LdapClient({ url: 'myaddomain' })
    await client.bind('someemail@domain.com.br', 'passwaord')

    const opts = {
        filter: `(sAMAccountName=credential)`,
        scope: "sub"
    }

    const s = await client.search(myBaseDN, opts)

    console.log('thumbnailPhoto', s[0].thumbnailPhoto)

}

log()输出类似于“JFIF `` C...”的内容。
我不知道如何将这个二进制文件保存到文件中。当我尝试几种方法时,正如X11E1F1X所解释的,都不起作用。似乎AD中的数据不是相同的“格式”。
我试着把它转换成缓冲区然后转换成base64

const buffer = Buffer.from(s[0].thumbnailPhoto, 'binary')
var src = "data:image/png;base64," + Buffer.from(s[0].thumbnailPhoto).toString('base64')

但输出不是有效的base64。

qxsslcnc

qxsslcnc1#

我在这里真的有点晚了,但是如果您现在使用的是ldapjs包(它似乎是您所使用的包的当前维护版本),则可以使用.raw属性访问缓冲区。
使用您的代码:

const s = await client.search(myBaseDN, opts)

console.log('thumbnailPhoto', s[0].raw.thumbnailPhoto)

现在可以转换为base64。

Buffer.from(s[0].raw.thumbnailPhoto, 'binary').toString('base64')

// <img src="data:image/*;base64,<base64 here>">

我想你可能不再从事这个项目了,但希望这能帮助像我这样的另一个搜索者:)
注意:查看此pr https://github.com/ldapjs/node-ldapjs/pull/107

相关问题