PDF를 가져 오기 위해 API를 호출하고 responseType을 arraybuffer로 보내는 작은 스크립트를 만들었습니다. 이 사용PDF로 다운로드 할 때 Chrome에서 Blob 객체를 차단합니다.
나는 새로운 물방울을 만들고 내가하는 앵커 요소를 만들 다운로드하려면이 강제로 '응용 프로그램/PDF'
과 유형을 설정, 그것을 블롭을 통과하고 클릭합니다.
이것은 테스트 서버의 로컬 및 다른 브라우저에서 정상적으로 작동하지만 Chrome에서는 다운로드 막대에 실패 - 파일 없음이 표시됩니다.
API에 URL을 탭에 붙여넣고 원래 API 호출의 응답을 Blob에 전달할 수 있으므로 PDF를 사용할 수 있습니다.
샘플 코드
var fileName = 'dummyFilename-' + offerId + '.pdf';
var blob = new window.Blob([resData], { type: 'application/pdf' });
var anchorElement = document.createElement('a');
var url = window.URL.createObjectURL(blob);
document.body.appendChild(anchorElement);
anchorElement.id = 'anchorElement';
anchorElement.hidden = 'true';
anchorElement.href = url;
if (typeof anchorElement.download !== 'undefined') {
anchorElement.download = fileName;
} else {
anchorElement.target = '_blank';
}
anchorElement.click();
실제로 나는 IE에서 다운로드 할 PDF를 얻는 데 BLOB 만 필요하다는 것을 실제로 발견했다. 결국 방금 클릭을 일반적인 URL로 지정하여 다운로드 속성을 설정하여이 기능을 지원하지 않는 브라우저에서 새 탭을 열도록했습니다. 나는 아직도 크롬이 Blob을 올바르게 처리하지 못하는 이유를 잘 모르고있다. –