2014-10-01 42 views
1

我有下面的代碼片段來加載[加載文件到服務器。它在本地環境中按預期工作,但不在Web服務器中工作。fs writeFile在應用程序根目錄下創建臨時文件

使用connect-multiparty

path = req.files.FIELDNAME.path; 
ogname = req.files.video.originalFilename; 

function(path , ogname, callback) { 
var fs = require('fs'); 
var uploadDir = process.cwd() + "/public/uploads/"; 
fs.readFile(path, function (err, data) { 
    var originalFilename = new Date().getTime() + '-' + ogname.replace(/[\s,:-]+/g, "-"); 
    var newPath = uploadDir + originalFilename; 
    var relatPath = "/uploads/" + originalFilename; 
    fs.writeFile(newPath, data, function (err,result) { 
    callback(relatPath); 
    }); 
}); 
} 

它創建爲預期/public/uploads文件,但葉在應用程序根東西太多。像這樣

enter image description here

回答

1

https://github.com/andrewrk/connect-multiparty

這個中間件將您的服務器上創建臨時文件和清理從未他們 起來。

您必須手動刪除它們:

//.... 
fs.writeFile(newPath, data, function (err,result) { 
    callback(relatPath); 
    fs.unlink(path, function (err) { 
     if (err) throw err; 
    }); 
}); 

注意process.cwd()返回應用程序的根路徑,但工作目錄。改爲使用__dirname

並使用rename速度更快,並且避免您不必手動刪除文件。

+0

會試着讓你知道。謝謝您的幫助 :) – niksmac 2014-10-01 06:58:33

相關問題