2017-02-04 3 views
3

注意:私はバニラノードでこれを行います。ファイルのサイズを取得し、アップロードしてPOSTリクエストします。

input type="file" HTMLタグを含むファイルをアップロードしたいのですが、同じフォーム要素に送信ボタンinput type="submit"を押して、POSTリクエストを送信するとファイルのサイズがバイト単位で取得されます。次のような

+0

あなたはまだ何を試してみました!? – dNitro

+0

純粋なNode.jsでこれをどうやって行うのか分かりません。そのため、私はあなた自身のような専門家に質問しました。 – JohnSnow

+0

誰も知っていますか? – JohnSnow

答えて

1

何かが動作するはず

ありがとう:

var http = require('http'); 

var server = http.createServer(function(req, res) { 
    switch (req.url) { 
    case '/': 
     display_form(req, res); 
     break; 
    case '/upload': 
     show_bytes(req, res); 
     break; 
    default: 
     res.writeHead(404, {'content-Type': 'text/plain'}); 
     res.write('not found'); 
     res.end(); 
     break; 
    } 
}); 
server.listen(3000); 

function display_form(req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.write(
    '<form action="/upload" method="post" enctype="multipart/form-data">'+ 
    '<input type="file" name="upload">'+ 
    '<input type="submit" value="Submit">'+ 
    '</form>' 
); 
    res.end(); 
} 

function show_bytes(req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.write(req.headers['content-length'] + ' bytes'); 
    res.end(); 
} 
+0

これは機能しますが、バイトサイズはわずかにオフです。実際のサイズよりもやや大きめです。何故ですか? – JohnSnow

+0

この@dNitroに関するアイデア – JohnSnow

+1

@ JohnNoob、私はそれに気づいていませんでしたが、本当に〜230バイトのオーバーヘッドを実際のサイズに追加するたびに見えます。通常、** content-length **ヘッダーは受信ボディーのサイズと同じでなければなりません。たぶんそのチャンク*エンコーディングのために?私は本当に分かりません。あなたは新しい質問と考えてもいいかもしれません。誰かが私たちを助けてくれるかもしれません。 – dNitro

関連する問題