2017-04-04 6 views
1

私はNode.jsの初心者で、自分のhtmlから画像をアップロードしようとしています。私は、下のHTMLコードを使用して、自分のWebアプリケーションに画像をアップロードできるボタンを作成しました。Node.jsのmultipartyパッケージを使用したERR_EMPTY_RESPONSEエラー

<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メッセージでしばらく待った後、ERROR私を示しています。

レスポンスのためだと思います。それは、ヘッダーが投稿された後、返信する必要がありますが返さないことを意味します。

そして実際に、私はそれはしかし、それはまだ同じエラーを与えるバックNode.jsの

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

の上記のコードでの応答を与える...私はなぜ知らないコードを書きました。

誰かがアイデアを持っていますか?または私は間違っていますか?

答えて

1

あなたは、あなたが、私は(res.send、その後(200) `res.status`のように書くべきであり、答えをres.send()

+1

感謝を呼び出す必要がレスポンスへのクライアントres.status(200)セット状態に応答を返しません。 )次の行に? – paulc1111

+0

はい@ paulc1111。 – kaxi1993

関連する問題