2017-09-01 3 views
1

私はNode + Expressを使用して簡単なWebサーバーで作業しています。私が奇妙な問題に直面しているセクションを説明しましょう。Express + Node:元のファイルと異なるサイズのresponse.download()でダウンロードされたファイル

外部スクリプト(dropbearkey)を使用して、私は鍵ペアを生成しており、生成された秘密鍵はサーバのファイルシステムに保存されています。目的は、この秘密鍵をクライアントの要求に対する応答として送信することです。クライアントはElectronを使用して開発されたアプリケーションです。

そうするためには、私は次のように使用しています:上記の行でファイルパス

response.download(filepath); 

は、サーバーのファイルシステム上で生成した秘密鍵のパスです。これはバイナリファイルです。

問題は、クライアント側でダウンロードしたファイルのサイズが元のファイルよりも大きいことです。どんな考え?私はここで何か間違っていますか?

ありがとうございます!

Original File (on Server)

Downloaded File (on Client)

答えて

0

元のファイルが(誤って)UTF-8でエンコードされたファイルとして扱われています。

const fs = require('fs'); 
process.stdout.write(fs.readFileSync('original_file').toString()); 

チェッククライアントがデータを文字列として解釈しないことを確認するために、しかし(バイナリ)バッファとして:

私はそうのように、元からダウンロードしたファイルを作成することができます。

関連する問題