자바 스크립트 파일 강제 다운로드

자바 스크립트를 사용하여 파일을 생성하고 다운로드 ? 당신이 그것에 대해 생각 하는 경우, 이것은 당신이 생각 하 고 사용자 상호 작용 없이 허용 되지 않아야(그러나 지금 허용). 내가 찾은 트릭은 자바 스크립트를 사용하여 앵커 오브젝트를 만들지 만 DOM에서 렌더링하지 않는 것입니다. 이 앵커는 자바 스크립트 변수로만 존재한다는 것을 의미합니다 (농담입니다, 자바 스크립트 상수입니다). 이 “점진적 향상” 관점의 주목할 만한 예외는 HREF 특성이 데이터 URI를 가리키는 경우입니다. 이전에는 사용자를 데이터 URI로 탐색할 수 있었지만 Chrome 브라우저는 보안 문제로 인해 이러한 형태의 탐색을 차단하기 시작했습니다. 그러나 “다운로드” 특성(사용자가 데이터 URI 콘텐츠를 다운로드할 수 있도록 허용)과 함께 사용되는 경우 데이터 URI HREF를 차단하지 않습니다. 우리가 그렇게 할 네이티브 자바 스크립트 기능이 없기 때문에 브라우저 (사용자)에 의해 다운로드 할 파일을 강제로 하드 보인다. 나는 이 함수가 존재하지 않는 이유를 알고 있지만 여전히 내 앱에서 다운로드 파일을 강제로 해야합니다! 예를 들어 프런트 엔드 앱에 비즈니스 논리를 넣으면 Blobs가 때때로 저장되지 않고 열릴 수 있습니다. 다운로드를 강제로 응용 프로그램 / 옥텟 스트림 MIME 유형을 사용하면 Safari에서 문제가 발생할 수 있습니다. 메신저는 dataUrl을 donwload하려고하지만 난 너무 큰 것 같아요.

내 다운로드 버튼은 아무것도하지 않을 것이고 나는 dataUrl이 매우 커서 그런 일이 일어난다고 생각합니다. 내 데이터가 너무 크지 않을 때 코드가 잘 작동합니다. 대안이 있습니까? saveA는 onTouchDown 또는 onClick과 같은 사용자 상호 작용 이벤트 내에서 실행되어야 합니다. setTimeout은 saveA가 트리거되는 것을 방지합니다. 때문에 iOS saveAs는 다운로드하는 대신 새 창에서 열립니다,이 수정을 원하는 경우이 버그가 당신에게 미치는 영향을 애플에 알려주십시오. XHR 또는 가져오기 API를 사용하는 GET 요청에서 데이터 흐름은 자바스크립트에 의해 처리됩니다. 그건 내가 하고 싶었던 일이 아니에요. 브라우저는 Javascript 엔진의 변수를 채우는 대신 내 파일을 사용자의 컴퓨터에서 다운로드해야 한다는 것을 이해해야 합니다.

다운로드 특성을 사용하여 브라우저에 Blob을 다운로드 특성에 포함된 이름으로 다운로드할 수 있음을 알수 있습니다. 내 고객 중 하나는 자신의 응용 프로그램에 멋진 기능을 추가하도록 요청 : Excel 보고서 파일을 다운로드합니다. 자바 스크립트로 다운로드를 시작해야하지만 GET 요청만큼 간단하지 는 않습니다.

Posted in Sem categoria.