fs writeFile在app root中创建临时文件

时间:2014-10-01 06:29:19

标签: node.js express connect

我有以下代码片段向上[将文件加载到服务器。它在本地环境中按预期工作,但在Web服务器中没有。

使用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中创建文件,但也在app root中留下了一些内容。喜欢这个

enter image description here

2 个答案:

答案 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

支持自动删除