我有以下代码片段向上[将文件加载到服务器。它在本地环境中按预期工作,但在Web服务器中没有。
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
中创建文件,但也在app root中留下了一些内容。喜欢这个
答案 0 :(得分: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要快得多,无需手动删除文件。
答案 1 :(得分:0)
虽然接受的答案效果很好,但您可以使用 temp package
支持自动删除