如何将 GCP DLP 与文件流结合使用
How to use GCP DLP with a file stream
我正在与 Node.js 和 GCP Data Loss Prevention 合作,尝试在显示 PDF 之前编辑敏感数据。 GCP 对此有很好的文档 here
基本上你拉入了 nodejs 库和 运行 这个
const fileBytes = Buffer.from(fs.readFileSync(filepath)).toString('base64');
// Construct image redaction request
const request = {
parent: `projects/${projectId}/locations/global`,
byteItem: {
type: fileTypeConstant,
data: fileBytes,
},
inspectConfig: {
minLikelihood: minLikelihood,
infoTypes: infoTypes,
},
imageRedactionConfigs: imageRedactionConfigs,
};
// Run image redaction request
const [response] = await dlp.redactImage(request);
const image = response.redactedImage;
所以通常情况下,我会将文件作为缓冲区,然后像上面那样将其传递给 DLP 函数。但是,我不再将我们的文件作为缓冲区。由于许多文件非常大,我们现在从 FilesStorage 中以 streams 的形式获取它们,就像这样
return FilesStorage.getFileStream(metaFileInfo1, metaFileInfo2, metaFileInfo3, fileId)
.then(stream => {
return {fileInfo, stream};
})
问题是,是否可以在流而不是缓冲区上执行 DLP 图像编辑?如果是这样,如何?
我发现其他一些 questions 说您可以使用 ByteContentItem
进行流式传输,并且 GCP 自己的文档中提到了“流”。但是,我已经尝试将返回的流从 .getFileStream
传递到上面的 byteItem['data'] 属性,但它不起作用。
因此,将流分块到适当大小的缓冲区中最有效。似乎有多种方法可以从您可以在此处使用的流构建缓冲区。
可能相关:Convert stream into buffer?
(原生流接口是一个很好的功能请求,只是还没有。)
我正在与 Node.js 和 GCP Data Loss Prevention 合作,尝试在显示 PDF 之前编辑敏感数据。 GCP 对此有很好的文档 here
基本上你拉入了 nodejs 库和 运行 这个
const fileBytes = Buffer.from(fs.readFileSync(filepath)).toString('base64');
// Construct image redaction request
const request = {
parent: `projects/${projectId}/locations/global`,
byteItem: {
type: fileTypeConstant,
data: fileBytes,
},
inspectConfig: {
minLikelihood: minLikelihood,
infoTypes: infoTypes,
},
imageRedactionConfigs: imageRedactionConfigs,
};
// Run image redaction request
const [response] = await dlp.redactImage(request);
const image = response.redactedImage;
所以通常情况下,我会将文件作为缓冲区,然后像上面那样将其传递给 DLP 函数。但是,我不再将我们的文件作为缓冲区。由于许多文件非常大,我们现在从 FilesStorage 中以 streams 的形式获取它们,就像这样
return FilesStorage.getFileStream(metaFileInfo1, metaFileInfo2, metaFileInfo3, fileId)
.then(stream => {
return {fileInfo, stream};
})
问题是,是否可以在流而不是缓冲区上执行 DLP 图像编辑?如果是这样,如何?
我发现其他一些 questions 说您可以使用 ByteContentItem
进行流式传输,并且 GCP 自己的文档中提到了“流”。但是,我已经尝试将返回的流从 .getFileStream
传递到上面的 byteItem['data'] 属性,但它不起作用。
因此,将流分块到适当大小的缓冲区中最有效。似乎有多种方法可以从您可以在此处使用的流构建缓冲区。
可能相关:Convert stream into buffer?
(原生流接口是一个很好的功能请求,只是还没有。)