【问题标题】:ERR_EMPTY_RESPONSE error using multiparty package in Node.js在 Node.js 中使用多方包的 ERR_EMPTY_RESPONSE 错误
【发布时间】:2017-08-29 09:25:59
【问题描述】:

我是 Node.js 的新手,正在尝试从我的 html 上传图片。我使用下面的 html 代码创建了可以将图像上传到我的网络应用程序的按钮。

<li><a onclick="getFile()" style="cursor:pointer; color:#000000;">Choose File</a></li>
<li><a onclick="uploadFile();" style="cursor: pointer; color:#000000;">Upload</a></li>
<li><a onclick="save2()" id="imageSave" style="cursor:pointer; color:#000000;">Save</a></li>
<li><a href="/location" style="color:#000000">Back to view</a></li>

<form action="/upload", method="post", enctype="multipart/form-data">
  <div style='height:0px; width:0px; overflow:hidden;'><input type="file" name="upFile" id="upFile" onchange="getCmaFileView(this, 'name')" target="dropzone_1"/></div>
  <div style='height:0px; width:0px; overflow:hidden;'><input type="submit" name="Upload" id="Upload" /></div>
</form>

点击上传li后,它会使用多方包从node.js上传一张图片,如下面的代码。

app.post('/upload', function(req, res, next) {

        var form = new multiparty.Form();

      // get field name & value
      form.on('field',function(name,value){
           console.log('normal field / name = '+name+' , value = '+value);
      });

      // file upload handling
      form.on('part',function(part){
           var filename;
           var size;
           if (part.filename) {
                 filename = part.filename;
                 size = part.byteCount;
           }else{
                 part.resume();

           }

           console.log("Write Streaming file :"+global_username);
           var writeStream = fs.createWriteStream('/opt/work/files/'+global_username);
           writeStream.filename = filename;
           part.pipe(writeStream);

           part.on('data',function(chunk){
                 console.log(global_username+'.png'+' read '+chunk.length + 'bytes');
           });

           part.on('end',function(){
                 console.log(global_username+'.png'+' Part read complete');
                 writeStream.end();
           });
      });

      // all uploads are completed
         form.on('close',function(){
           res.status(200);
      });

      // track progress
      form.on('progress',function(byteRead,byteExpected){
           console.log(' Reading total  '+byteRead+'/'+byteExpected);
      });
      form.on('error',function(){
        console.log('error');
      });

      form.parse(req);
});

它会保存图像并很好地上传,但在等待一段时间后显示一个错误,并显示ERR_EMPTY_RESPONSE 消息。

我认为这是因为响应。这意味着在标题发布后,应该给它回复但它没有。

实际上,我在上面的 Node.js 代码中编写了返回响应的代码

form.on('close',function(){
               res.status(200);
          });

但是,它仍然给出同样的错误......我不知道为什么。

有人有想法吗?还是我错了?

【问题讨论】:

    标签: javascript html node.js image-uploading


    【解决方案1】:

    您不向客户端返回响应res.status(200) 将状态设置为响应然后您需要调用res.send()

    【讨论】:

    • 感谢您的回答,那我应该像res.status(200) 这样写,然后在下一行写 res.send() 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2011-09-24
    • 2011-09-13
    • 2015-09-04
    相关资源
    最近更新 更多