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