2011-12-08 6 views
2

워크 플로 중 하나에서 동적으로 생성 된 파일을 다운로드 할 수있는 웹 응용 프로그램이 있습니다. 입력은 파일을 생성하는 데 필요한 매개 변수가있는 양식입니다.브라우저에서 동적으로 생성 된 파일을 다운로드하는 방법은 무엇입니까?

현재 해결책은 서블릿 쪽에서이 양식 &을 제출하게하는 것입니다. 응답 헤더 - 내용 처리를 첨부 파일로 변경합니다. &도 적절한 MIME 유형을 제공합니다.

하지만이 방법이 부적절한 것으로 나타났습니다. 파일 생성이 매우 오랜 시간이 걸릴 가능성이 있기 때문에 특정 시간 초과 후 브라우저에서 500 또는 503 오류가 발생합니다. 나는 이것이 현재의 접근법에서 기대되는 것이라고 생각한다.

양식을 제출하자마자 사용자에게 알릴 수 있도록 워크 플로를 유연하게 만들어서 파일 준비가 완료되는 즉시 파일에 대한 링크를 표시하는 &을 생성하는 데 시간이 걸릴 수 있습니다. 파일이나이 메시지를 이메일로 보낼 수도 있지만 이상적이지 않습니다.

내가이 문제에 대한 접근 방식을 제안 할 수 있습니까? 정보 제공에있어서 좀 더 구체적이어야합니까? 어떤 도움을 주셔서 감사합니다.

답변

1

: JQuery와에서보세요 보고서를로드하는 페이지로 가져 오는 것입니다.

  • 1) 보고서가로드되는 것을 그들에게 알려 :

    가있는 페이지가 될 것입니다.
    • 이)가 외설 경우 1 단계로 돌아갑니다 :
    • 2) 중 하나를 새로 고침시 메타 새로 고침 태그 또는 자바 스크립트)
    • 3)를 사용하여, 보고서 준비 및 중 하나 있는지 확인합니다 (자체 갱신 준비 됨
    • b) 준비가되면 문서를 제공합니다.

동기는 구식의 종류,하지만 당신이 원하는 방식이처럼 귀하의 질문에 소리가났다.

비동기 방식은 다음을 포함합니다 :이 준비되면

  • 사용 아약스는 문서에 대한 링크가 페이지에 표시 할 수 있습니다.
  • 이전에 생성 된 문서를 보여주는 별도의 페이지가 있습니다.사용은 여가 시간에이 페이지로 이동할 수 있으며 나머지 사이트는 찾아 볼 수 있습니다. 이를 위해서는 생성 된 문서의 기록을 유지해야합니다.
  • 제안한대로 전자 메일로 보내주십시오.
1

직접 양식을 제출하는 대신 양식 데이터로 비동기식 Ajax 호출을 서버에 보낼 수 있습니다. 서버에서 임시 파일을 만들고 다운로드 URL로 클라이언트에 대한 링크를 반환합니다. Javascript를 통해 답변을 제출하면 다운로드 링크가 잠시 후에 표시된다는 힌트를 사용자에게 표시 할 수 있습니다. 임시 파일을 정리하는 것을 잊지 마십시오!

Ajax Call을 제출하려면 Javascript Framework를 사용하는 것이 좋습니다. 당신이 전통적인 접근 방식을 (문서가 준비보다는 기다리는 동안 그들을 떨어져 가서 다른 일을해야하는 사용자가 기다리게 예) 동 기적으로이 작업을 수행하려면

http://api.jquery.com/category/ajax/

+0

감사합니다. Andreas. 나는 내 코드베이스에서 jQuery를 광범위하게 사용한다. :) temp를 생성하는 것처럼. 이 파일이나 다른 메커니즘을 정리하는 cron 작업을 제안 하시겠습니까? – Chantz

관련 문제