파일 업로드 서비스에 다음 항목을 사용하고 있습니다.
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
});
});
});
내가 이해하는 바에서 ( https://stackoverflow.com/a/30458411/2742995 ) 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);
동기화 된 버전입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다