반응형
Firefox에서 Blob createObjectURL 다운로드가 작동하지 않음 (그러나 디버깅 할 때 작동 함)
이상한 문제가 있습니다. 아래 함수는 클라이언트에서 Blob을 생성하고 (배열로 전달됨)이를 다운로드 할 수있는 방법에 대해 인터넷에서 찾은 내용을 기반으로 생성 한 것입니다. 이것은 Chrome에서 훌륭하게 작동하지만 Firefox에서는 아무 작업도 수행하지 않습니다. 코드를 디버그하고 단계별로 실행하지 않는 한. 예, 이상하게도 함수 내부에 중단 점을 만들고 단계별로 실행하면 a.click ()이 다운로드 창을 표시합니다!
function downloadFile(filename, data) {
var a = document.createElement('a');
a.style = "display: none";
var blob = new Blob(data, {type: "application/octet-stream"});
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
누구든지 나를 도울 수 있습니까? 이것은 Firefox 38.0.5를 사용하여 테스트되었습니다.
리소스를 너무 빨리 제거하고있을 수 있습니다. 지연 해보십시오.
...
a.click();
setTimeout(function(){
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
}
위의 방법으로 문제가 해결되지 않았습니다. 그러나 이것은 대신했습니다 :
Firefox에서 작동하지 않는 <a> 태그의 프로그래밍 방식 클릭
리소스의 조기 제거가 아니라 클릭 이벤트를 트리거하는 문제였습니다.
이 솔루션은 기존 앵커 요소가 바이너리 파일을 다운로드하기 위해 봇 크롬 및 파이어 폭스에서 나를 위해 작동합니다.
window.URL = window.URL || window.webkitURL;
var blob = new Blob([new Uint8Array(binStream)], {type: "octet/stream"});
var link = document.getElementById("link");
link.href = window.URL.createObjectURL(blob);
반응형
'programing' 카테고리의 다른 글
Key에 무엇이든 담을 수있는 Dictionary를 만드는 방법? (0) | 2021.01.14 |
---|---|
C 및 C ++에서 표 형식 문자를 이스케이프해야합니까? (0) | 2021.01.14 |
Android에서 개발 모드 및 릴리스 모드 환경 설정 구별 (0) | 2021.01.14 |
HTML 텍스트 입력에서 텍스트를 선택할 때 강조 색상 변경 (0) | 2021.01.14 |
mysql_escape_string VS mysql_real_escape_string (0) | 2021.01.14 |