fs writeFile 在应用程序根目录中创建临时文件

问题描述 投票:0回答:2

我有以下代码片段来上传[将文件加载到服务器。它在本地环境中按预期工作,但在 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
中创建文件,但也会在应用程序根目录中留下一些内容。像这样

enter image description here

node.js express multiparty
2个回答
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
 来代替。
使用

重命名

速度更快,并且无需手动删除文件。


0
投票
temp 包

支持自动删除

© www.soinside.com 2019 - 2024. All rights reserved.