私はElectronを使用してアプリケーションを作成しています。私はSocket.IOでサーバーにファイルを送る必要があったので、socket.io-streamモジュールをインストールしました。私はブラウザでテストしましたが、うまくいきます。socket.io-streamによる電子送信ファイルが 'TypeError:無効な非文字列/バッファチャンク'に失敗しました
ss(socket).on('/user/update/profile', (stream, data) => {
const filename = path.basename(data.name);
const ws = fs.createWriteStream(`userdata/profile/${filename}`);
stream.on('error', (e) => {
console.log('Error found:');
console.log(e);
});
stream.on('drain', (e) => {
console.log('drain');
});
stream.on('data',() => {
console.log('data');
});
stream.on('close',() => {
console.log('close');
});
stream.pipe(ws);
//ss(socket).emit('/user/update/profile', {});
});
そして、これは、クライアント側のコードです:
var file = ev.target.files[0];
var stream = ss.createStream();
ss(socket).emit('/user/update/profile', stream, {
email: this.props.user.email,
name: file.name,
size: file.size
});
var blobStream = ss.createBlobReadStream(file);
var size = 0;
blobStream.on('data', (chunk) => {
size += chunk.length;
console.log(`${size}/${file.size}`);
});
blobStream.pipe(stream);
コードはちょうど、非常に簡単ですが、電子で同じことを行う、それは常に
TypeError: Invalid non-string/buffer chunk
これは、サーバー側のコードであると失敗しますNPMのモジュールの紹介ページの例を参考にしてください。私はすでにブラウザとして機能していると言っていました。あなたは、コンソールに進行状況をアップロードするすべてのファイルを記録していることがわかります。 Electronを使用すると、送信ファイルはすべてのデータサイズで記録されるため動作するようですが、サーバー側では失敗します。
NW.jsと同様の問題が見つかりました。その人は自分の方法で問題を解決しましたが、それは私のためには機能しませんでした。
私はどのようにすればよいか非常に感謝しています。