Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当没有上传文件时,我使用busboy的应用程序冻结_Javascript_Node.js_File_Multipartform Data_Busboy - Fatal编程技术网

Javascript 当没有上传文件时,我使用busboy的应用程序冻结

Javascript 当没有上传文件时,我使用busboy的应用程序冻结,javascript,node.js,file,multipartform-data,busboy,Javascript,Node.js,File,Multipartform Data,Busboy,我正在写一个接收表单的应用程序,我有一个小问题。当没有文件上传时,我的应用程序冻结。我不知道为什么。我使用connect busboy接收文件 这是我的密码: req.busboy.on('file', function(fieldname, file, filename) { switch(fieldname){ case 'mainPhoto': if(filename != '' &&a

我正在写一个接收表单的应用程序,我有一个小问题。当没有文件上传时,我的应用程序冻结。我不知道为什么。我使用connect busboy接收文件

这是我的密码:

req.busboy.on('file', function(fieldname, file, filename) {
            switch(fieldname){
                case 'mainPhoto':
                    if(filename != '' && filename != null && filename != "null") {
                        console.log("w mainPhoto w if'ie")
                        var n = filename.lastIndexOf(".");
                        var end = filename.substring(n+1, filename.length);
                        mainPhoto = "mh_" + id + "." + end;
                        fstream = fs.createWriteStream(__dirname + '/static/photos/' + mainPhoto);
                        file.pipe(fstream);
                        fstream.on('close', function() {
                            console.log("End of saving hospital's main photo.");
                        });
                        break;
                    }
                    else {
                        mainPhoto = null
                        break;
                    }

                case 'photos':
                    if(filename != '' && filename != null && filename != "null") {
                        var n = filename.lastIndexOf(".");
                        var end = filename.substring(n+1, filename.length);
                        var photohoto;
                        photo = "h_" + id + "_" + photosCount + "." + end;
                        photos.push(photo);
                        fstream = fs.createWriteStream(__dirname + '/static/photos/' + photo);
                        file.pipe(fstream);
                        photosCount++;
                        fstream.on('close', function() {
                            console.log("End of saving hospital's main photo.");
                        });
                        break;
                    }
                    else {
                        break;
                    }


                case 'priceList':
                    if(filename != '' && filename != null && filename != "null") {
                        var n = filename.lastIndexOf(".");
                        var end = filename.substring(n+1, filename.length);
                        priceList = "pricelist_" + id + "." + end;
                        fstream = fs.createWriteStream(__dirname + '/static/price_lists/' + priceList);
                        file.pipe(fstream);
                        fstream.on('close', function() {
                            console.log("End of saving hospital's price list.");
                        });
                        break;
                    }
                    else {
                        priceList = null;
                        break;
                    }
            }
        });
我必须添加所有文件以避免它,但这不是我想做的事情


感谢您的帮助。谢谢

在某个时候,您需要将响应发送回客户端。你遗漏了上传处理程序的其余部分,很难说这是否导致了你的问题。这就是我的全部功能:从“finish”开始的代码根本不会执行。TBH,我认为你应该重构你的代码,它太嵌套和复杂了。例如,可能是在数据库连接/查询完成之前调用了
finish
事件。另外,为每个请求创建一个新的数据库连接的性能不是很高,而且几乎总是不必要的(只需打开它一次,并在应用程序的生命周期内重用它),但关键是上传所有文件时一切正常,例如,当我只上传其中两个文件时,应用程序冻结。这很可能是由于
finish
事件调用太快(因为
busboy
与此无关),甚至在您为其设置处理程序之前。换句话说,它可能在您尚未侦听它的某个时间点触发(并且事件未“排队”或其他任何情况:如果没有侦听器,则事件将“丢失”)。