javascript 파일 다운로드 완료

디스크 또는 일부 캐싱 메커니즘에 파일을 작성 한 다음 완성 된 파일을 다운로드 하는 별도의 URL 끝점을 제공 하 여이 작업을 해결 하는 몇 가지 방법이 있습니다, 하지만 이러한 접근 방식은 무엇이 필요 합니다, 제 생각에, 비-사소한 양의 서버 사이드 코드 달성. 내가 정말 원하는 방법은 사용자가 우리가 그들의 파일을 구축 하 고 있어 ` 제출 ` 여러 번 타격에서 그들을 계속 알려 하는 방법입니다. 이 전 스택 오버플로에 대 한 질문을 발견 검색 있음 (원래 다른 되지 않은–될-라는 사이트가 긁힌 stackoverflow.com) 여기서 한 대답은이 문제 해결을 위한 흥미로운 아이디어를 제시 발견. javascript를 사용 하 여 브라우저에서 ”내용-처리: 첨부 파일” 헤더와 함께 응답을 수신할 수 없는 경우, javascript를 사용 하 여 브라우저에서 특정 이름과 값을 가진 쿠키가 수신 되는 시기를 결정할 수 있습니다. 우리는 파일 다운로드 응답에 쿠키를 추가 하 고 파일을 다운로드할 수 있다는 사실과 그 쿠키의 존재를 동일시 하는 자바 스크립트를 사용 하기 위해 서버측 구현에 코드의 매우 작은 금액을 추가할 수 있습니다. 몇 가지 코드를 살펴보겠습니다: 다운로드 파일을 제대로 작동 합니다. 나는 그것의 폴더를 가진 파일을 다운로드할 필요가 있다-자바 스크립트 일반적으로 HTML/JS에 있는 2 개의 파일 다운로드 기술이 있다: 창. 열기 및 마우스 클릭/링크를 누릅니다. 이 두 방법 모두 적합 하지 않습니다. 질문의 조사 도중 몇몇 재미 있는 해결책은 찾아냈다. 함께 그들은 자바 스크립트 파일 다운로드를 위한 완벽 한 해결책이 될 것으로 보인다. 나는 $ (문서)에서 blockkuifordownload ()를 호출입니다. 준비 (함수 () 하지만 여전히 나는 페이지 새로고침 없이 sefod 시간을 다운로드할 수 없습니다.

이 문제를 해결 하려면 어떻게 해야 합니까? 그건 그렇고, 내가 좀 다르게 (버튼을 클릭)와 다른 사람도, (나를 미치게이 찾는 일을 도움이 될 수 있습니다 뭔가 이벤트를 트리거합니다!)를 제출 하는 매개 변수로 blockkuifordownload ()를 호출 하지 않는 것입니다 (이것은 처리기로 추가 이후)와 경우 하지만 t는 나중에 페이지 새로 고침 (내 응용 프로그램에 있을 수 있습니다) 없이 다시 클릭 한 다음 두 번째 처리기를 추가 하 고 여러 개의 set간격이 동시 실행 됩니다. 그것은 제시의 예제에서 문제가 아니지만, 방법은 내가 내 상황을 위해 그것을 번역. 그렇습니다, 나는 지금 막 이것을 시험 하 고 X sendfile를 가진 동일한 방법을 작동 한다 확인할 수 있다. 개체에서 readystatechange 이벤트를 설정할 수 있습니다. 이것을 통해 당신은 다운로드가 시작 되 고 있는지, happenning 또는 완료 되었다는 것을 찾아낼 수 있다. 파일 여전히 다운로드 … 1379695746067file 아직 다운로드 … 여전히 다운로드 1379695746565파일 … 1379695747066파일 여전히 다운로드 …

1379695747565파일 여전히 다운로드 … 1379695748066파일 여전히 다운로드 … 1379695748568파일 여전히 다운로드 … 1379695749066파일 여전히 다운로드 … 여전히 다운로드 1379695749585파일 … 여전히 다운로드 1379695750065파일 … 1379695750567다운로드 완료! 내가이 접근법에 대해 가장 좋아하는 것은 당신이 위의 코드를 하나의 방법이 나 다른의 99%를 써야 할 것입니다. 서버 측 기능을 만들 수 있는 유일한 추가는 우리가 응답에 파일 다운로드 토큰 쿠키를 추가 하는 단일 줄 이었습니다. 이것은 모든 서버 사이드 코드가 다운로드할 파일을 만들고 있는 동안 우리의 JavaScript 타이머가 브라우저 소프트웨어 (위)에 다시 폴링하는 쿠키 가치 이다. 응답이 클라이언트로 다시 플러시되 면 타이머는 쿠키가 존재 하 고 ` finishdownload ` 메서드를 호출 한다는 것을 알 수 있습니다. 이제 살펴보겠습니다. 같은 크롬 확장으로 작동 하지 않습니다.

내가 명단. json 추가 됨. html 페이지가 열립니다. 레이블이 표시 되지 않습니다. innerhtml = ` 다운로드에서 시작 됩니다 + seconddsbeforedownload + ` 초 … `; 이 자습서에서는 파일을 다운로드 하 고 완료 된 다운로드 비율을 보여 주는 AJAX 요청을 만드는 방법을 보여 줍니다. 다운로드 응답이 도착 했을 때 쿠키 헤더가 클라이언트에만 도착할 것 이므로 쿠키의 단순한 존재는 사용자가 다운로드 요청을 완료 했음을 의미 합니다.