Busboy 'filesLimit' 事件没有触发
Busboy 'filesLimit' event doesnt fire
我正在尝试将上传的图像从客户端发送到服务器。
我是这样做的:
...
var files = document.getElementById('myForm').files;
var formData = new FormData();
formData.append('image', files[0]);
$.ajax({
url: '/upload',
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function(data){
alert(JSON.stringify(data));
}
});
...
在我使用的服务器中 Express
。然后,要访问服务器上上传的文件,我使用 connect-busboy
模块:
...
router.post('/upload', function(req, res, next) {
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
//do something
});
req.busboy.on('filesLimit', function(){
//do something
});
});
...
为了设置上传文件的文件大小限制,我在 connect-busboy 构造函数中将 fileSize
选项设置为 3 mb:
...
app.use(
busboy({
limits: {
fileSize: 3*1024 //3 mb
}
})
);
...
问题是当我上传尺寸大于 3 mb 的图像时,filesLimit
事件不会触发。更糟糕的是,file
事件在这一刻触发并且 (!) 只有 3 MB 的文件可用。
怎么了?为什么 filesLimit
事件没有触发?感谢您的帮助!
回答我自己的问题。
我以错误的方式附加了文件大小限制事件侦听器。事实证明,我们应该以这种方式将事件附加到作为流的文件对象上。
req.busboy.on('file', function (fieldname, file, filename) {
file.on('limit', callback); // <- here is
});
我正在尝试将上传的图像从客户端发送到服务器。 我是这样做的:
...
var files = document.getElementById('myForm').files;
var formData = new FormData();
formData.append('image', files[0]);
$.ajax({
url: '/upload',
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function(data){
alert(JSON.stringify(data));
}
});
...
在我使用的服务器中 Express
。然后,要访问服务器上上传的文件,我使用 connect-busboy
模块:
...
router.post('/upload', function(req, res, next) {
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
//do something
});
req.busboy.on('filesLimit', function(){
//do something
});
});
...
为了设置上传文件的文件大小限制,我在 connect-busboy 构造函数中将 fileSize
选项设置为 3 mb:
...
app.use(
busboy({
limits: {
fileSize: 3*1024 //3 mb
}
})
);
...
问题是当我上传尺寸大于 3 mb 的图像时,filesLimit
事件不会触发。更糟糕的是,file
事件在这一刻触发并且 (!) 只有 3 MB 的文件可用。
怎么了?为什么 filesLimit
事件没有触发?感谢您的帮助!
回答我自己的问题。
我以错误的方式附加了文件大小限制事件侦听器。事实证明,我们应该以这种方式将事件附加到作为流的文件对象上。
req.busboy.on('file', function (fieldname, file, filename) {
file.on('limit', callback); // <- here is
});