我试图调用一个API,循环遍历一个图像数组,为数组中的每个图像分配唯一的名称,然后将它们写到本地目录中。如果我简化了代码,我可以将它们写到根文件夹,.I已经手动创建了子文件夹,所以在运行函数之前它就已经存在了。
以下是我的基本功能:
const imageFolder = './img';
function downloadImage(url, filepath) {
client.get(url, res => {
res.pipe(fs.createWriteStream(`${imageFolder}/${filepath}`));
});
}
...make api call
const imagesArray = generations.data.map(item => item.generation.image_path);
imagesArray.forEach(item => {
// const fileName = uuid.v4() + '.webp'; // trying to assign unique filename with uuid
const fileName = new Date().getTime().toString() + '.webp'; // trying to assign unique filename with date object
downloadImage(item, fileName);
});
如果我改变了
res.pipe(fs.createWriteStream(`${imageFolder}/${filepath}`));
至
res.pipe(fs.createWriteStream(filepath));
然后,它将工作,但只是转储图像的根。我在想,也许我试图用字符串(对于fileName +‘..webp’)连接一个变量名,但正如前面提到的,它在根中工作。见附图。
我还尝试将路径添加到forEach循环中的实际函数调用中,如下所示
downloadImage(item, `${imageFolder}/${fileName}`);
我确实想知道是否需要__dirname
变量,或者它是否是权限问题,但我没有看到任何错误。
我认为这是非常简单的。
发布于 2022-09-08 10:27:58
好吧,很简单,我想我知道了,一旦我开始工作,我就改变到
downloadImage(item, path.join('src', 'img', fileName));
path.join连接文件夹名称并修复跨平台工作时出现的问题(OSX、Windows等),这在本例中是适用的,因为我正在从Windows和Mac进行测试。
https://stackoverflow.com/questions/73635433
复制相似问题