【发布时间】:2016-02-05 02:09:05
【问题描述】:
我正在上传一个文件(使用 multer)并对其进行一些处理,我想在处理它的同时显示进度。我的问题是客户端在处理完成后收到所有更新。所以进度条会从 0 变为 100%,而不是随着代码的进行而增量更新。
服务器端
var multer = require('multer')
var uploading = multer({ dest: 'uploads/' })
app.post('/result', uploading.single('audio'), function(req, res) {
var oldPath = req.file.path;
var newPath = req.file.destination + req.file.originalname;
fs.renameSync(oldPath, newPath)
var ext = newPath.substring(newPath.length-3);
io.emit('message',{'message': 'upload completed !'});
console.log('1st update');
if (ext =='mp3' || ext == 'wav')
{
//console.log('running audio code');
io.emit('update',{'step': 'Converting Audio',percent: 2/10});
audio_code(newPath );
//res.render('Results_Audio', { });
}
else if (ext =='avi' || ext == 'mp4')
{
console.log('run video code');
res.render('Results_Video', { });
}
});
在客户端
socket.on('update',function(data) {
console.log(data);
Update(data);});
function Update(data){
document.getElementById('NameArea').innerHTML = data.step;
console.log(data.percent*100);
document.getElementById('ProgressBar').style.width = data.percent*100 + '%';
document.getElementById('percent').innerHTML = (Math.round((data.percent*100))) + '%';
}
【问题讨论】:
-
我是新手,所以我可能错过了一个简单的概念
-
您如何发布数据?你能显示那个代码吗?我的猜测是这是一个阻塞调用
-
@greg_diesel 我正在使用 multer 我已在问题中添加了该信息
-
audio_code(newPath );运行需要多长时间? -
这需要几分钟,具体取决于上传文件的大小,这就是为什么我发出更新消息以显示代码所在的步骤以及完成了多少
标签: sockets post express socket.io multer