Express.js / 马尔特。在 onFileUploadComplete 完成之前发送响应
Express.js / Multer. Response being sent before onFileUploadComplete is complete
我正在使用以下文件上传服务:
onFileUploadStart: function (file) {
uploadPath = "";
imageDimensions = null;
console.log(file.originalname + ' is starting to upload...');
},
onFileUploadComplete: function (file) {
uploadPath = file.path;
uploadPath = uploadPath.replace(/\/g,"/");
console.log("Upload complete. " + file.fieldname + ' uploaded to ' + file.path)
sizeOf(file.path, function (err, dimensions) {
if (err){
console.log("ERROR, Can't get size of image! " + err);
return;
}
else{
imageDimensions = {
width : dimensions.width,
height: dimensions.height
};
console.log("Size of image: width: " + imageDimensions.width + ". height: " + imageDimensions.height);
}
});
}
和
app.post('/imageupload',function(req,res){
upload(req,res,function(err) {
console.log("response is being send..");
if(err) {
return res.end("Error uploading file.");
}
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.json({
dimensions: imageDimensions,
path: uploadPath
});
});
});
据我了解 () onFileUploadComplete 在执行 .post 处理程序之前首先处理。但是,我的控制台显示:
a.jpg is starting to upload...
Upload complete. file uploaded to uploadeddata\a1235412.jpg
response is being send..
Size of image: width: 2835, height: 1654
所以似乎就在 onFileUploadComplete 函数的中间,.post 处理程序已经被执行了..
有什么办法可以解决这个问题吗?
好的,知道了...我使用的 sizeOf 函数是异步的.....
var dimensions = sizeOf(file.path);
是同步版本。
我正在使用以下文件上传服务:
onFileUploadStart: function (file) {
uploadPath = "";
imageDimensions = null;
console.log(file.originalname + ' is starting to upload...');
},
onFileUploadComplete: function (file) {
uploadPath = file.path;
uploadPath = uploadPath.replace(/\/g,"/");
console.log("Upload complete. " + file.fieldname + ' uploaded to ' + file.path)
sizeOf(file.path, function (err, dimensions) {
if (err){
console.log("ERROR, Can't get size of image! " + err);
return;
}
else{
imageDimensions = {
width : dimensions.width,
height: dimensions.height
};
console.log("Size of image: width: " + imageDimensions.width + ". height: " + imageDimensions.height);
}
});
}
和
app.post('/imageupload',function(req,res){
upload(req,res,function(err) {
console.log("response is being send..");
if(err) {
return res.end("Error uploading file.");
}
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.json({
dimensions: imageDimensions,
path: uploadPath
});
});
});
据我了解 (
a.jpg is starting to upload...
Upload complete. file uploaded to uploadeddata\a1235412.jpg
response is being send..
Size of image: width: 2835, height: 1654
所以似乎就在 onFileUploadComplete 函数的中间,.post 处理程序已经被执行了..
有什么办法可以解决这个问题吗?
好的,知道了...我使用的 sizeOf 函数是异步的.....
var dimensions = sizeOf(file.path);
是同步版本。