2016-07-26 107 views
3

我試圖使用fs-extra模塊將圖像從文件夾複製到另一個目標。將源文件複製到Nodejs中的另一個目標

var fse = require('fs-extra'); 

function copyimage() { 
    fse.copy('mainisp.jpg', './test', function (err) {  
    if (err) 
     return console.error(err) 
    }); 
} 

這是我的目錄

,這是我得到的所有的時間錯誤:

Error {errno: -4058, code: "ENOENT", syscall: "lstat", path: "E:\mainisp.jpg", message: "ENOENT: no such file or directory, lstat 'E:\mainisp.jpg'"}

,並通過改變目的地./test/我得到這個錯誤

Error {errno: -4058, code: "ENOENT", syscall: "lstat", path: "E:\Development\Node apps\Node softwares\Digital_library\mainisp.jpg", message: "ENOENT: no such file or directory, lstat 'E:\Devel… apps\Node softwares\Digital_library\mainisp.jpg'"}

注意:我沒有在瀏覽器中測試它。這是一個Nwjs應用程序,附帶的錯誤圖片來自Nwjs控制檯。

回答

10

您可以輕鬆地使用流,使用本地fs模塊執行此操作。

const fs = require('fs'); 
const path = require('path'); 

let filename = 'mainisp.jpg'; 
let src = path.join(__dirname, filename); 
let destDir = path.join(__dirname, 'test'); 

fs.access(destDir, (err) => { 
    if(err) 
    fs.mkdirSync(destDir); 

    copyFile(src, path.join(destDir, filename)); 
}); 


function copyFile(src, dest) { 

    let readStream = fs.createReadStream(src); 

    readStream.once('error', (err) => { 
    console.log(err); 
    }); 

    readStream.once('end',() => { 
    console.log('done copying'); 
    }); 

    readStream.pipe(fs.createWriteStream(dest)); 
} 
+0

這也應該工作。 – alex030293

+0

它不起作用! '..我複製和粘貼你的代碼在我的功能,仍然100%第二個錯誤,我已經提到了上述。 –

+0

此代碼確實有效,因爲目標目錄不存在,您只是遇到錯誤。至少這就是你提供的錯誤。您想要的目錄路徑不會與文件一起創建。包含的文件夾仍然需要在文件被複制之前存在。 – peteb

6

嘗試:

var fs = require('fs-extra'); 

fs.copySync(path.resolve(__dirname,'./mainisp.jpg'), './test/mainisp.jpg'); 

正如你可以在錯誤信息中看到,你想從E:\mainisp.jpg而不是當前目錄中讀取文件。

您還需要指定文件的目標路徑,而不僅僅是目標文件夾。

+0

感謝您的快速回復!但是src文件與javascript文件位於同一目錄,所以路徑可能只是我們在Html或css中使用它的名稱。而我沒有得到這個東西「與文件的目標路徑」! –

+0

可以請你用上面的代碼顯示我應該使用的確切路徑。目錄的圖像被附上!請 –

+0

@RaoHammasHussain目標路徑必須是'./test/mainisp.jpg'不是'。/ test'。您需要指定文件,而不僅僅是目錄。 – alex030293

相關問題