WebクライアントからNode ExpressサーバーにMP3ファイルをアップロードしたいとします。ファイルをアップロードしてディスクに書き込むことができます。しかし、ファイルが壊れてしまい、MP3プレーヤーで曲を再生できません。NodeJS Expressサーバーにmp3をアップロードするとファイルが破損する
違いがある場合は、ファイルをOS Xマシンからアップロードしてから、Ubuntuサーバに書き込みます。アップロードされたファイルのアップロードされたサイズは元のサイズよりも大きいです。このワークフローではエラーは発生しません。私がファイルを再生するまで、何もうまくいかない。
私のコードは下記を参照してください。なぜ私がこれを経験しているかについてのアイデアはありますか?
CLIENT
uploadSong: (song) => {
fetch('http://localhost:8080/song', {
method: 'PUT',
headers: {
'Content-Type': 'audio/mpeg',
},
body: song
})
.then(response => {
console.log("Got response after uploading song:", response);
})
.catch(error => {
console.log("Error in Firebase AC upload song: ", error);
});
}
サーバ
app.put("/song", (req, res) => {
var mp3SongName = 'test.mp3';
var mp3_file = fs.createWriteStream(mp3SongName);
mp3_file.on('open', function (fd) {
req.on('data', function(data){
console.log("loading... \n");
mp3_file.write(data);
});
req.on('end', function(){
console.log("finalizing...");
mp3_file.end();
res.sendStatus(200);
});
});
}
診断に役立つようなサイズのテキストファイルを作成してアップロードすることをおすすめします。次に、ディスク上のファイルの内容を見て、送信したファイルとの違いを知ることができます。 – skirtle
私はこの行を疑っています: 'body:song'。私の推測では、「歌」は、それが想定されているものではないということでしょう。 – skirtle
@skirtle よろしくお願いします。私はテストファイルを "TEST"と書いてアップロードしました。結果のファイルの読み込み: "data:text/plain; base63、" 私はmp3ファイルを調べました。 –
kashiB
data:text/plain; base63、