>웹 프론트엔드 >JS 튜토리얼 >사용자 상호 작용을 중단하지 않고 Ajax를 사용하여 파일 다운로드를 트리거하려면 어떻게 해야 합니까?

사용자 상호 작용을 중단하지 않고 Ajax를 사용하여 파일 다운로드를 트리거하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-28 19:41:11693검색

How Can I Trigger a File Download Using Ajax Without Interrupting User Interaction?

Ajax로 파일 다운로드 활성화

비동기 프로그래밍 시대에는 사용자 상호작용을 방해하지 않고 파일을 다운로드해야 하는 경우가 많습니다. 이 질문은 사용자에게 파일을 로컬에 저장하라는 메시지를 표시하면서 Ajax를 사용하여 파일을 다운로드하는 방법을 탐구합니다.

제공된 Struts2 액션에서 스트림 결과를 사용하여 파일을 다운로드할 수 있습니다. 그러나 jQuery를 사용하여 이 작업에 직접 게시하면 파일이 브라우저 내에서 바이너리 스트림으로 렌더링됩니다. 파일 다운로드 창을 실행하려면 다른 접근 방식이 필요합니다.

최신 브라우저 솔루션

최신 브라우저는 보다 간단한 솔루션을 제공합니다. fetch() API를 사용하면 파일을 blob으로 검색하고 다운로드용 임시 URL을 생성할 수 있습니다.

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(resp => resp.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.style.display = 'none';
    a.href = url;
    // Set the download filename
    a.download = 'todo-1.json';
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url);
    alert('File download complete!');
  })
  .catch(() => alert('File download failed!'));

이 접근 방식을 사용하려면 fetch() API 및 createObjectURL()을 지원하는 최신 브라우저가 필요합니다. 방법입니다.

위 내용은 사용자 상호 작용을 중단하지 않고 Ajax를 사용하여 파일 다운로드를 트리거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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