我试图在Web应用程序上上传excel文件。 但是当我上传我的文件时,Web应用程序上有一个inifnite循环,但文件已正确上传,这里是代码:
更新
节点:
var storage = multer.diskStorage({
destination: function(req,file,cb) {
cb(null,'/uploads/')
},
filename: function(req,file,cb) {
cb(null, file.originalname);
}
});
var upload = multer({ storage : storage });
app.post('/upload', upload.single('file'), function(req,res) {
var tmp_path = req.file.path;
var target_path = './uploads/'+req.file.originalname;
var source = fs.createReadStream(tmp_path);
var dest = fs.createWriteStream(target_path);
var stream = source.pipe(dest);
stream.on('finish', function() {
res.send();
});
});
Angular:
$scope.uploadFile = function() {
var file = $scope.myFile;
var uploadUrl = "/upload";
var fd = new FormData();
fd.append('file',file);
}
$http.post(uploadUrl,fd,{
headers: {'Content-Type' : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}
});
使用Pierre Emmanuel Lallemant提出的解决方案,没有更多的无限循环,但上传后文件已损坏,其大小为0 Ko而不是850 Ko。
答案 0 :(得分:0)
要检测文件是否已保存,以下代码应该有效:
dest.on('finish', function() {
res.send();
});
这一定必须有效:
source.pipe(dest).on('finish', function() {
res.send();
});
答案 1 :(得分:0)
我正在使用multer,所以我没有编写所有进程的代码。
我只是这样做:
app.post('/upload', upload.single('propt'), function (req, res) {
res.send();
});