gpt4 book ai didi

javascript - 将 mp3 上传到 NodeJS Express 服务器会损坏文件

转载 作者:搜寻专家 更新时间:2023-11-01 00:37:34 26 4
gpt4 key购买 nike

我想从我的网络客户端上传一个 MP3 文件到 Node Express 服务器。我可以上传文件,然后将其写入磁盘。但是,文件已损坏,我无法使用 MP3 播放器播放歌曲。

如果有区别,文件是从 OS X 机器上传的,然后被写入 Ubuntu 服务器。上传文件的上传大小比原始文件大。我在此工作流程中没有收到任何错误。在我开始播放文件之前没有任何问题。

请看下面我的代码。关于我为什么会遇到这种情况的任何想法?

客户

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);
});
});
}

最佳答案

我在检查上传的文件时注意到,数据是以 base64 编码的字符串形式写入的。

我追溯到我的客户端代码,它使用了 FileReader.readAsDataUrl读取文件的方法:

...the result attribute contains the data as a URL representing the file's data as a base64 encoded string

谜底揭晓。现在我只需要弄清楚是在服务器上对文件进行解码,还是首先使用不对其进行编码的 FileReader 方法。

关于javascript - 将 mp3 上传到 NodeJS Express 服务器会损坏文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46145443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com