브라우저에서 파일 다운로드 완료 감지
사용자에게 피드백을 제공할 때 동적 파일 생성 및 다운로드가 어려울 수 있습니다. 이 기사에서는 서버가 요청에 대한 응답으로 파일을 생성하지만 브라우저가 다운로드 완료 시기를 명확하게 표시하지 않는 시나리오를 조사합니다.
문제: 이벤트 감지 제한
작성자는 파일이 동적으로 생성되고 숨겨진 iframe에 저장되는 시나리오에서 다운로드 완료를 감지하는 데 어려움을 겪었습니다. iframe의 "로드" 이벤트가 여러 브라우저에서 일관되게 트리거되지 않아 신뢰할 수 없는 표시기가 발생했습니다.
대체 솔루션: 클라이언트측 폴링
한 가지 솔루션에는 다음이 포함됩니다. JavaScript에서 클라이언트 측 폴링 메커니즘을 사용합니다. 알고리즘은 다음과 같이 작동합니다.
서버측 응답
서버측 코드는 "fileDownloadToken"이라는 이름의 쿠키를 설정하여 응답합니다. 요청에 비어 있지 않은 토큰 값이 포함되어 있습니다. 이 쿠키는 다운로드가 완료되었음을 클라이언트측 코드에 알리는 역할을 합니다.
코드 구현
클라이언트측 JavaScript 예:
function blockResubmit() { // ... downloadTimer = window.setInterval(function() { var token = getCookie("fileDownloadToken"); if (token == downloadToken || attempts == 0) { unblockSubmit(); } attempts--; }, 1000); }
서버측 예시 PHP:
$TOKEN = "downloadToken"; // Sets a cookie so that when the download begins the browser can // unblock the submit button. $this->setCookieToken($TOKEN, $_GET[$TOKEN], false); $result = $this->sendFile();
이 접근 방식의 이점
위 내용은 일관된 '로드' 이벤트 없이 브라우저에서 파일 다운로드 완료를 안정적으로 감지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!