다중 파일을 업로드 한 다음 원래 이름으로 다시 이름을 바꾸기 위해 multer를 사용하려고했습니다. 샘플 코드는 다음과 같습니다.다중 파일 업로드 및 node.js의 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입니다. 이름 바꾸기 기능이 여전히 업로드 할 수있는 파일을 가져 오는 것으로 보입니다. 나는 내 이해가 정확한지 확신하지 못한다. 그렇다면 파일이 완전히 업로드되었는지 확인하는 방법이 있습니까? 내 문제에 대한 제안?
감사합니다. 방금 Multer의 기본 제공 기능을 시도했지만 예상대로 작동했습니다. BTW, 파일이 멀터에서 다운로드 완료되었는지 확인하는 방법이 있는지 알고 있습니까? – Liang
@Liang'app.post' 라우트에 도달하면 완료되었습니다. https://github.com/expressjs/multer/issues/360#issuecomment-231001064 및 http://stackoverflow.com/a/30458411/3714913 – Nateowami
을 참조하십시오. 위의 두 게시물에서 매우 명확하게 들립니다. 그러나, 나는 아직도 그것을 의심하고있다. "흥미롭게도 파일을 확장 한 시점에서 파일을 사용할 수없는 것 같습니다." – Liang