js 작업 파일 생 성

1394 단어
백 엔 드 에서 들 려 오 는 base 64 데 이 터 를 시각 적 인 work 파일 로 변환 합 니 다.
프로젝트 요 구 는 워 크 시트 를 다운로드 하여 작성 할 수 있 지만 백 엔 드 데이터 msSaveBlob 를 여러 번 실패 한 후에 인터넷 의 같은 유형의 수 요 를 살 펴 보고 base 64 로 직접 돌아 가 전단 blob 에서 포맷 하 는 방향 을 제공 하여 최종 적 으로 실현 되 었 습 니 다.
전체 프로 세 스 는 파일 데 이 터 를 백 엔 드 에서 base 64 로 변환 한 다음 내용 을 초기 화하 고 모든 요 소 를 Uint 8 형식 으로 변환 한 다음 지 정 된 위치 에 있 는 문자 의 유 니 코드 인 코딩 을 되 돌려 줍 니 다. 이 어 인 코딩 Blob 화 를 통 해 docx 형식 으로 지정 합 니 다. 마지막 으로 링크 를 만 들 고 blob 할당 값 을 파일 로 만 듭 니 다.
요청 헤더 responseType: 'blob' 추가 하기
전체 논리:
var myFile = this.createFile(response.data);

let execlName = this.viewData.select.applyBisName + '_' + this.viewData.select.projectName + '_' + '     ' + '.docx';

if(navigator.appVersion.toString().indexOf(".NET")>0){

    window.navigator.msSaveBlob(myFile, execlName);

} else {

    var a = document.createElement("a");

    a.href =window.URL.createObjectURL(myFile);

    a.download = execlName;

    a.click();

    document.body.appendChild(a);

}

데이터 변환 논리:
createFile(urlData) {

    var bytes=window.atob(urlData),

        n=bytes.length,

        u8arr=new Uint8Array(n);

    while(n--){

        u8arr[n] = bytes.charCodeAt(n);

}

    return new Blob([u8arr],{type:'application/vnd.openxmlformats-officedocument.wordprocessingml.document'})

}

좋은 웹페이지 즐겨찾기