>웹 프론트엔드 >JS 튜토리얼 >브라우저에서 파일 다운로드 완료를 안정적으로 감지하려면 어떻게 해야 합니까?

브라우저에서 파일 다운로드 완료를 안정적으로 감지하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-05 21:06:49454검색

How Can I Reliably Detect File Download Completion in a Browser?

파일 다운로드 완료 감지 처리

문제:

브라우저가 동적으로 생성된 파일 다운로드는 대기 표시기를 표시할 때 중요합니다. 현재 iframe의 "로드" 이벤트를 사용하면 브라우저 불일치로 인해 이 문제가 해결되지 않습니다.

해결책 1: 브라우저 기반 토큰 확인

클라이언트 측 JavaScript 솔루션에는 다음이 포함됩니다.

  • 다운로드를 위한 고유 토큰 생성 요청.
  • 토큰과 함께 요청 제출
  • "대기" 표시 표시.
  • 타이머를 설정하여 토큰 값으로 해당 쿠키를 주기적으로 확인합니다.
  • 쿠키 발견 시 표시기를 숨깁니다.

서버 측에서는 알고리즘:

  • 요청에서 토큰을 확인합니다.
  • 발견된 경우 토큰 값으로 쿠키를 설정합니다.

코드 조각( JavaScript):

function setFormToken() {
  var downloadToken = new Date().getTime();
  document.getElementById("downloadToken").value = downloadToken;
  return downloadToken;
}

코드 스니펫(PHP):

// Set a cookie to unblock submit button when download begins.
$TOKEN = "downloadToken";
$this->setCookieToken($TOKEN, $_GET[$TOKEN]);

솔루션 2: 서버 폴링

또는 서버 측 접근 방식에는 다음이 포함됩니다.

  • 파일 생성을 시작하는 중입니다.
  • 폴링 중
  • 준비된 파일을 다운로드합니다.

이 방법을 사용하면 임시 서버 파일이 생성되지 않습니다. 그러나 대기 기간 동안 클라이언트-서버 통신이 필요합니다.

장점과 단점:

브라우저 토큰을 사용하면 동적 감지가 가능하지만 브라우저 호환성 문제가 있을 수 있습니다. . 서버 폴링은 더 안정적이지만 속도가 느린 옵션입니다.

위 내용은 브라우저에서 파일 다운로드 완료를 안정적으로 감지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.