2010-01-18 3 views
2

내 페이지에 링크 버튼이 있습니다. 어떤 DMS 시스템에서 파일을 다운로드 한 다음 response.write을 사용하여 서버에서 클라이언트로 압축 한 후 파일을 보냅니다.Ajax 호출에서 응답 객체를 편집 할 수 있습니까?

하지만 페이지가 최적화 되었기 때문에 오류가 발생합니다.

Ajax 전화로 클라이언트에 파일을 보낼 수 있습니까? RadAjax입니다.

답변

0

원하는 데이터를 보낼 수 있으며 JavaScript로 처리 할 수 ​​있어야합니다.

JavaScript가 압축 된 파일로 수행 할 수있는 일은 많지 않습니다 (JavaScript로 찾기 또는 압축 해제 라이브러리를 작성하는 경우가 아니면).

+0

JS에서 파일을 압축하지 않습니다. M은 그것을하기 위해 다른 도구를 사용합니다. – Ankit

+0

나는 당신이 말한 적이 없다. 응답으로 압축 파일을 보내고 있습니다. JS가 유용한 것을하기를 원하면 JS에서 압축을 풀어야한다. – Quentin

+0

그 이유는 매우 큰 클라이언트 컴퓨터에 파일을 다운로드해야합니다. 그래서 그것을 압축하고 클라이언트에게 보내고 싶습니다. 또한, 압축 문제가 아니라, 그것은 ajaxified 페이지에서 response.write 메소드를 사용하여 파일을 보내는 중입니다. – Ankit

1

파일을 다운로드해도 페이지가 새로 고침되지 않으므로 사용자가 컨텍스트를 잃지 않으므로 AJAX 콜백을 사용하여 파일을 요청할 이유가 없습니다. 이는 일반적으로 AJAX 콜백을 선호하는 이유입니다.

귀하의 의견에 따르면, 문제를 극복하기 위해 2 가지 방법이 있습니다 :

    당신이 두 번째 서버에서 파일을 다운로드 때문에 진전이 동시에 응답 스트림에 쓸 수
  1. 브라우저의 열기/저장 대화 상자에 표시됩니다.
  2. 임시로 파일을 데이터베이스/파일 시스템의 어딘가에 저장하고 사용자가 직접 만든 두 번째 요청으로 파일을 보낼 수 있습니다.

중간 저장 장치를 다루지 않아도 첫 번째 메시지는 나에게 더 합리적인 것처럼 보입니다.

+0

내 페이지에 링크 버튼이있는 rad grid가 있습니다.링크 버튼을 클릭하면 다른 서버에서 응용 프로그램 서버로 파일을 가져온 다음 클라이언트에 파일을 다운로드해야합니다. 파일 다운로드가 지연 될 수 있으므로 파일 다운로드가 완료되었음을 사용자에게 알려야합니다. 따라서 나는 파일이 다운로드 될 때까지 다운로드 패널을 보여주기 위해 Rad Ajax 관리자를 사용하고 있습니다. – Ankit

+0

파일을 다운로드 할 때마다 항상 지연이 있지만 각 브라우저에는 표준 및 예상대로 작동하는 대화 상자가 있습니다 (예 : Chrome의 한 탭에서의 모든 다운로드 또는 Safari/Firefox 등에서의 다운로드와 함께 단일 팝업).). 왜 그런 행동을 다른 방식으로 다시 구현하고 싶습니까? –

+0

파일 열기/저장 대화 상자는 응용 프로그램 서버에서 클라이언트 시스템으로의 다운로드 진행률을 표시합니다. 내 응용 프로그램에서 시간이 많이 걸리는 작업은 외부 서버에서 응용 프로그램 서버로 파일을 가져 와서 클라이언트에 전송하는 것입니다. – Ankit

1

이 컨텍스트에서 도움이되지 않기 때문에 Response.Write 또는 Response.WriteFile을 사용하여 파일 다운로드를 수행하지 마십시오.

원하는대로하려면 압축 파일을 디스크에 저장하고 사용자를 다운로드 파일로 리디렉션하십시오. 임시 폴더를 만들어 즉시 작성한 zip 파일을 유지하고 매시간 또는 미리 정의 된 시간 간격마다 삭제할 ​​수 있습니다. 당신은 표준 포스트 백 (post-back driven) 비 아약스 호출로부터 이것을 호출해야합니다. 이것은 국가를 보존 할 것입니다.

Response.Redirect("path-file-to-download"); 
Response.End(); 
+0

내 페이지를 리디렉션 할 수 없습니다. 검색 페이지로 사용하고 동일한 페이지에 사용자를 유지해야합니다. – Ankit

+2

이렇게하면 동일한 페이지에 사용자가 계속 이동합니다. 브라우저는 파일을 다운로드 가능 비 -HTML 파일로 감지합니다. :) –

관련 문제