Я пытаюсь обработать два разных изображения с одним и тем же именем (и это не подлежит обмену) с помощью облачных функций.Функция запускается для обработки только изображения и того же случая для второго изображения.Проблема в том, что я не могу удалить временные файлы, поэтому второе изображение не может быть сохранено, потому что оно имеет тот же путь и то же имя.Я использую fs.unlinkSync()
, чтобы очистить временную папку, но это не работает.Это код:
exports.thumb= functions.database.ref('/{uid}/upload')
.onUpdate(async (change, context) => {
const fileName = "RawImage.jpg";
const userId = context.auth.uid;
const bucket = storage.bucket("-----");
const workingDir = path.join(os.tmpdir(), "thumbs");
const tempFilePath = path.join(workingDir, fileName);
const filePath = path.join(userId,fileName);
await fs.ensureDir(workingDir);
await bucket.file(filePath).download({destination: tempFilePath});
const thumbFileName = `thumb_${fileName}`;
const thumbFilePath = path.join(userId, thumbFileName);
const out = path.join(workingDir, thumbFileName);
const uploadPromises = async () => {
await sharp(tempFilePath)
.resize(300, 200)
.grayscale()
.toFile(out);
return await bucket.upload(out, {
destination: thumbFilePath,
});
}
const v = await uploadPromises();
return fs.unlinkSync(workingDir);
});
Последняя строка предназначена для очистки рабочего каталога, в котором хранятся временные файлы, но это не работает (при обработке второго изображения всегда возвращается первое изображение).Я пытался даже fs.unlincSync()
файлы сигл, но не работает.