내 웹 클라이언트에서 Node Express 서버로 MP3 파일을 업로드하고 싶습니다. 파일을 업로드 한 다음 디스크에 쓸 수 있습니다. 그러나 파일이 손상되어 MP3 플레이어를 사용하여 노래를 재생할 수 없습니다.NodeJS Express 서버에 mp3를 업로드하면 파일이 손상됩니다.
차이가 나는 경우 파일이 OS X 컴퓨터에서 업로드되고 우분투 서버에 기록됩니다. 업로드 된 파일의 업로드 크기가 원본 크기보다 큽니다. 이 워크 플로에서 오류가 발생하지 않습니다. 파일을 재생하기 전에는 아무 것도 잘못되지 않습니다.
내 코드는 아래를 참조하십시오. 왜 내가 이것을 경험하는지에 대한 아이디어가 있습니까?
CLIENT 데이터를 base64로 인코딩 된 문자열로 기록지고 있었다 업로드 된 파일을 검사 할 때 내가 발견
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
데이터 : text/plain; base63,