【发布时间】:2016-08-25 05:48:45
【问题描述】:
我打算使用 multer 上传多个文件,然后将它们重命名为原始名称。以下是示例代码:
var express = require('express');
var app = express();
var fs = require("fs");
var multer = require('multer');
app.use(express.static('public'));
var upload = multer({ dest: './upload/' });
app.get('/index.html', function (req, res) {
res.sendFile(__dirname + "/" + "index.html");
})
app.post('/file_upload', upload.array('theFile', 2), function (req, res, next) {
var errorcode = 0;
for (var i = 0; i < req.files.length; i++) {
fs.rename(req.files[i].path, req.files[i].destination + req.files[i].originalname, function (err) {
errorcode = err;
}(i));
}
if (errorcode != 0) {
console.log("errorcode is " + errorcode);
res.sendStatus(500);
return;
} else {
res.json({
message: 'File uploaded successfully',
});
}
})
var server = app.listen(8089, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
我正在 Windows 服务器上测试上述代码。我的观察是文件可以成功上传,但 fs.rename() 不断返回错误“1”。目标文件夹中重命名的文件始终为 1Kb。似乎重命名函数打算获取可能仍在上传的文件。我不确定我的理解是否正确。如果是这样,有没有办法确定文件是否已完全上传?对我的问题有什么建议吗?
【问题讨论】:
标签: node.js asynchronous multer