2017-11-30 8 views
1

File 객체 (오디오는 <input type=file />에 있습니다)가 있습니다.File 객체에서 base64-string을 만들기 위해 어떤 기능을 선택해야합니까?

저장소에 저장하려면 서버에서 보내고 싶습니다.

나는 파일 객체에서 얻고 자하는 base64-string을 포함하는 json을 보낼 것이다.

fileReader interface의 기능을 base64로 변환해야한다면 혼동 스럽습니다. 는 지금은 readAsBinaryString를 사용 : 나는 그것을 다운로드하고 (내 경우에는 MP3) 전과 같은 확장자를 변경하고 오디오가 재생되지 후이 방법

function getBase64(file) { 
    return new Promise ((res,rej) => { 
    var reader = new FileReader(); 
    reader.readAsBinaryString(file); 
    reader.onload = function() { 
     res(reader.result); 
    }; 
    }) 
} 

나는, 서버에 오디오 파일을 저장합니다. 코덱에 대한 오류가 표시됩니다.

어쩌면 나는 행동의 사슬에서 중요한 것을 놓쳤을 것이다. 나는 모른다. 미리 감사드립니다.

답변

1

readAsBinaryString은 자바 스크립트 문자열 내에 인코딩 된 이진 데이터를 나타냅니다. 클라이언트와 서버 간의 인코딩 차이로 인해 데이터가 손상 될 수 있습니다. 여기에있는 것 같습니다.

https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsBinaryStringreadAsBinaryString은 파일을 ArrayBuffer로 읽어들이는 readAsArrayBuffer을 사용합니다. ArrayBuffer는 바이너리 파일에보다 일관된 바이트 표현을 포함합니다. 그러나 ArrayBuffer를 base64로 변환하는 것은 약간 까다로울 수 있습니다.

Base64로 인코딩 된 이진 데이터에 관심이 있으니 FileReader 인스턴스에서 readAsDataURL 메서드를 사용하는 것이 좋습니다. 파일 내용을 Base64로 인코딩 된 문자열로 직접 읽습니다. 필요한 정보가 미리 추가되어 있으므로 적절한 데이터를 만들 수 있습니다. 필요한 경우 제거 할 수 있습니다. 여기에서 readAsDataURL 문서를 확인하십시오. https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL