Ajax를 사용한 비동기 파일 다운로드
제공된 시나리오에서는 파일 다운로드에 Struts2 액션이 사용되지만 jQuery는 문제가 발생합니다. post() 호출은 파일 다운로드 창을 여는 대신 파일을 바이너리 스트림으로 검색합니다. 이 글의 목적은 문제를 해결하고 파일 다운로드 창을 표시하는 솔루션을 제공하는 것입니다.
Ajax를 사용하여 파일 다운로드를 활성화하는 핵심은 Content-Disposition 응답 헤더를 활용하는 데 있습니다. 이 헤더는 첨부 파일로 설정되어야 합니다. filename={fileName}, 여기서 {fileName}은 원하는 파일 이름을 나타냅니다. 이 헤더를 설정하면 브라우저가 사용자에게 파일 다운로드 창을 표시하도록 지시합니다.
Struts2 작업에서 Content-Disposition 헤더를 동적으로 수정하려면 인터셉터를 사용할 수 있습니다. 이를 수행할 수 있는 방법의 예는 다음과 같습니다.
public class DownloadInterceptor implements Interceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); response.setHeader("Content-Disposition", "attachment; filename=" + actionInvocation.getArgs()[0]); // Replace with your code return invocation.invoke(); } @Override public void destroy() {} @Override public void init() {} }
인터셉터를 구현한 후에는 이를 다운로드 작업에 적용하여 Content-Disposition 헤더를 동적으로 설정할 수 있습니다.
By 이러한 단계를 결합하면 Ajax를 사용하여 비동기적으로 파일을 다운로드하고 사용자가 파일을 로컬에 저장할 수 있도록 Struts2 애플리케이션을 구성할 수 있습니다.
위 내용은 Ajax 및 Struts2 작업을 사용하여 파일 다운로드를 트리거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!