Используя приложение-функцию Azure, я хочу иметь возможность загружать изображения из разных URL-адресов в определенную папку, архивировать их и отправлять ZIP-файл обратно в ответ.
Я могу добиться этого, выполнив следующие шаги:
- запрос файла
- Сохранить файл локально
- Zip каталог, используя
- Архиватор читает Zip-файл, конвертирует его в base64
- отправить буфер в теле ответа
Скачать и сохранить изображение
const img = await request(url, { encoding: "binary" });
fs.writeFile(filesName, data, "binary", err => {
if (err) {
reject(`Error while writing the file; ${err}`);
} else {
resolve(data);
}
});
Заархивируйте каталог, прочитайте ZIP-файл и отправьте ответ
const target = await zipDirectory(dirName, targetFile);
context.log('Target ' + targetFile);
const rawFile = await readFile(targetFile);
const fileBuffer = Buffer.from(rawFile, "base64");
context.res = {
body: fileBuffer,
headers: {
"Content-Disposition": `filename=target.zip`,
"Content-Type": "application/zip"
},
status: 202
};
Есть ли лучший способ сделать это?