簡體   English   中英

nodejs fs createWriteStream不適用於文件路徑前綴

[英]nodejs fs createWriteStream not working with file path prefix

我正在嘗試調用 API,遍歷圖像數組,為數組中的每個圖像分配唯一名稱,然后將它們寫入本地目錄。 如果我簡化代碼,我可以將它們寫入根文件夾。我已經手動創建了子文件夾,因此它在運行 function 之前就存在。

這是我的基本 function:

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 循環內的實際 function 調用中,如下所示

downloadImage(item, `${imageFolder}/${fileName}`);

我確實想知道是否需要__dirname變量,或者它是否可能是權限問題,但我沒有看到任何錯誤。

我假設這很簡單。

在此處輸入圖像描述

好的,相當簡單,我想我一旦開始工作就知道了,改為

downloadImage(item, path.join('src', 'img', fileName));

path.join連接文件夾名稱並修復跨平台(OSX、Windows 等)工作時的問題,這適用於這種情況,因為我正在從 Windows 和 Mac 進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM