首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nodejs fs createWriteStream不使用文件路径前缀

nodejs fs createWriteStream不使用文件路径前缀
EN

Stack Overflow用户
提问于 2022-09-07 12:21:23
回答 1查看 178关注 0票数 0

我试图调用一个API,循环遍历一个图像数组,为数组中的每个图像分配唯一的名称,然后将它们写到本地目录中。如果我简化了代码,我可以将它们写到根文件夹,.I已经手动创建了子文件夹,所以在运行函数之前它就已经存在了。

以下是我的基本功能:

代码语言:javascript
运行
复制
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);
});

如果我改变了

代码语言:javascript
运行
复制
res.pipe(fs.createWriteStream(`${imageFolder}/${filepath}`));

代码语言:javascript
运行
复制
res.pipe(fs.createWriteStream(filepath));

然后,它将工作,但只是转储图像的根。我在想,也许我试图用字符串(对于fileName +‘..webp’)连接一个变量名,但正如前面提到的,它在根中工作。见附图。

我还尝试将路径添加到forEach循环中的实际函数调用中,如下所示

代码语言:javascript
运行
复制
downloadImage(item, `${imageFolder}/${fileName}`);

我确实想知道是否需要__dirname变量,或者它是否是权限问题,但我没有看到任何错误。

我认为这是非常简单的。

EN

回答 1

Stack Overflow用户

发布于 2022-09-08 10:27:58

好吧,很简单,我想我知道了,一旦我开始工作,我就改变到

代码语言:javascript
运行
复制
downloadImage(item, path.join('src', 'img', fileName));

path.join连接文件夹名称并修复跨平台工作时出现的问题(OSX、Windows等),这在本例中是适用的,因为我正在从Windows和Mac进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73635433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档