이제이 줄로 File 객체를 얻습니다.
file = document.querySelector('#files > input[type="file"]').files[0]
base 64에서 json을 통해이 파일을 보내야합니다. base64 문자열로 변환하려면 어떻게해야합니까?
답변
최신 ES6 방식 (비동기 / 대기)
const toBase64 = file => new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => resolve(reader.result);
    reader.onerror = error => reject(error);
});
async function Main() {
   const file = document.querySelector('#myfile').files[0];
   console.log(await toBase64(file));
}
Main();
UPD :
오류를 잡으려면
async function Main() {
   const file = document.querySelector('#myfile').files[0];
   const result = await toBase64(file).catch(e => Error(e));
   if(result instanceof Error) {
      console.log('Error: ', result.message);
      return;
   }
   //...
}
답변
FileReader 클래스를 사용하여 솔루션을 사용해보십시오 .
function getBase64(file) {
   var reader = new FileReader();
   reader.readAsDataURL(file);
   reader.onload = function () {
     console.log(reader.result);
   };
   reader.onerror = function (error) {
     console.log('Error: ', error);
   };
}
var file = document.querySelector('#files > input[type="file"]').files[0];
getBase64(file); // prints the base64 string
공지 사항이 .files[0]A는 File의 sublcass입니다 유형은 Blob. 따라서와 함께 사용할 수 있습니다 FileReader. 
전체 작업 예를 참조하십시오 .
답변
약속 기반 솔루션을 따르는 경우 다음에 맞게 @Dmitri의 코드입니다.
function getBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => resolve(reader.result);
    reader.onerror = error => reject(error);
  });
}
var file = document.querySelector('#files > input[type="file"]').files[0];
getBase64(file).then(
  data => console.log(data)
);
답변
Dmitri Pavlutin 및 joshua.paling 답변을 바탕으로 base64 내용을 추출하고 시작 부분에서 메타 데이터를 제거하고 패딩이 올바르게 수행 되도록하는 확장 버전이 있습니다.
function getBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => {
      let encoded = reader.result.toString().replace(/^data:(.*,)?/, '');
      if ((encoded.length % 4) > 0) {
        encoded += '='.repeat(4 - (encoded.length % 4));
      }
      resolve(encoded);
    };
    reader.onerror = error => reject(error);
  });
}
답변
JavaScript btoa () 함수를 사용하여 데이터를 base64로 인코딩 된 문자열로 변환 할 수 있습니다
답변
다음은 쉽게 전달할 수있는 json 형식의 파일을 얻기 위해 작성한 몇 가지 함수입니다.
    //takes an array of JavaScript File objects
    function getFiles(files) {
        return Promise.all(files.map(file => getFile(file)));
    }
    //take a single JavaScript File object
    function getFile(file) {
        var reader = new FileReader();
        return new Promise((resolve, reject) => {
            reader.onerror = () => { reader.abort(); reject(new Error("Error parsing file"));}
            reader.onload = function () {
                //This will result in an array that will be recognized by C#.NET WebApi as a byte[]
                let bytes = Array.from(new Uint8Array(this.result));
                //if you want the base64encoded file you would use the below line:
                let base64StringFile = btoa(bytes.map((item) => String.fromCharCode(item)).join(""));
                //Resolve the promise with your custom file structure
                resolve({ 
                    bytes: bytes,
                    base64StringFile: base64StringFile,
                    fileName: file.name, 
                    fileType: file.type
                });
            }
            reader.readAsArrayBuffer(file);
        });
    }
    //using the functions with your file:
    file = document.querySelector('#files > input[type="file"]').files[0]
    getFile(file).then((customJsonFile) => {
         //customJsonFile is your newly constructed file.
         console.log(customJsonFile);
    });
    //if you are in an environment where async/await is supported
    files = document.querySelector('#files > input[type="file"]').files
    let customJsonFiles = await getFiles(files);
    //customJsonFiles is an array of your custom files
    console.log(customJsonFiles);
답변
onInputChange(evt) {
    var tgt = evt.target || window.event.srcElement,
    files = tgt.files;
    if (FileReader && files && files.length) {
        var fr = new FileReader();
        fr.onload = function () {
            var base64 = fr.result;
            debugger;
        }
        fr.readAsDataURL(files[0]);
    }
}
