fs writeFile在应用程序根目录下创build临时文件
我有下面的代码片段[加载文件到服务器。 它在本地环境中按预期工作,但不在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
创build文件,但是在app root中也留下了一些东西。 喜欢这个
https://github.com/andrewrk/connect-multiparty
这个中间件将在你的服务器上创build临时文件,而不是清理它们。
你必须手动删除它们:
//.... fs.writeFile(newPath, data, function (err,result) { callback(relatPath); fs.unlink(path, function (err) { if (err) throw err; }); });
请注意, process.cwd()
不会返回应用程序根path,而是返回工作目录。 改用__dirname
。
使用重命名速度更快,并免除手动删除文件。