我在google函数中遇到了无限循环的问题。我再次尝试自动调整图像大小并停止该功能,但是我不知道如何检查文件是否已调整大小。我发现很少有解决方案来更改名称,然后检查名称是否已更改,但问题是我想保留原始文件名。
我还使用了一些示例文件来检查文件是否已删除,但这似乎也不起作用
if(object.resourceState === 'not_exists'){
console.log('File deleted')
return null
}
请提供任何帮助
exports.handler = ((object) => {
const bucket = object.bucket;
const contentType = object.contentType;
const filePath = object.name
const destBucket = storage.bucket(bucket)
const tempFilePath = path.join(os.tmpdir(), path.basename(filePath))
const metadata = { contentType: contentType }
if (!object.contentType.startsWith('image/')) {
console.log('This is not an image.');
return null;
}
if(object.resourceState === 'not_exists'){
console.log('File deleted')
return null
}
return destBucket.file(filePath).download({
destination: tempFilePath
}).then(() => {
return spawn('convert', [tempFilePath, '-resize', '150x150', tempFilePath])
}).then(() => {
return destBucket.upload(tempFilePath,
{
destination: path.basename(filePath),
metadata: metadata
})
})
答案 0 :(得分:0)
如果绝对必须覆盖原始文件,则应检查传递给函数的generation对象的ObjectMetadata值,以便确定对象是否已被处理。
答案 1 :(得分:0)
经过数小时的Google文档浏览,我终于设法在偶然的类似问题中找到了关于stackoverflow的解决方案。
Firebase Function - Resize and overwrite existing image on upload to Storage
我不敢相信某些Google文档如此无用。他们大多数人都还不错。
有权力的人都可以“将此问题标记为重复”