2013-05-10 2 views
2

Coldfusion 8을 사용하고 있으며 cf_content로 15mo 파일을 제공하려고합니다. 문제는 다운로드가 무작위로 고정된다는 것입니다. 지금은 로컬에서만 시도 했으므로 네트워크가 문제가 아닙니다. 나는 더 작은 파일을 시도하고 동결이 자주 발생하지 않습니다. 나는 그 문제의 뿌리를 전혀 모른다.ColdFusion 8에서 대용량 파일을 전달하는 방법은 무엇입니까?

<cfheader name="Content-Disposition" value="attachment; filename=test.zip"> 
<cfcontent type="application/zip" file="C:\Test.zip" deletefile="no"> 

내가 크롬, IE로하고 (일부 반복 후 읽기 방법에 동결) 파일을 다운로드하는 자바 코드의 조각 파일을 다운로드하려고 : 여기 내 ColdFusion에서 코드입니다.

Coldfusion을 사용하여 파일을 쉽게 스트리밍 할 수있는 방법이 있습니까? Java 사용자 정의 태그를 사용하는 것이 가능하지만 Response 객체의 사용자 정의 태그 쓰기 메소드로 문자열을 쓰는 것만으로 페이지에 바이트를 쓰는 방법은 있을까요?

+0

15MB를 원하셨습니까? 공유/호스트 환경을 사용하고 있습니까? ColdFusion에서 사용하는 웹 서버는 무엇입니까? –

+0

webspace에 파일을 넣고 cfcontent없이 domain/test.zip을 사용하여 테스트를 다운로드 했습니까? – Travis

+0

Apache를 사용하는 경우 mod_xsendfile을 고려해 볼 수도 있습니다. – Henry

답변

4

나는 클라이언트를 위해 이것을했다. 나는 많은 문서를 모으고 그들을 다운로드 압축합니다. 스트림을 스트리밍하지 않고 서버에 zip 파일을 저장합니다.

<cfzip action="zip" file="#expandpath('/data/briefcase/')##session.order_id#.zip" source="#expandpath('/data/briefcase/')##session.order_id#" overwrite="yes" storepath="no"> 

그런 다음 사용자에게 파일 다운로드 링크를 제공합니다. 그렇게하면 실패 할 경우 항상 다시 시도 할 수 있습니다.

그런 다음 매일 실행되는 예약 된 작업을 작성하고 24 시간이 넘은 모든 zip 파일을 삭제합니다. 많은 데이터를 예상하는 방법을 브라우저에 지시

<cfheader name="Content-Length" value="#GetFileInfo('C:\Test.zip').size#"> 

: 당신의 코드를 씁니다 도움이된다면

<cfdirectory action="list" directory="#expandpath('/data/briefcase/')#" name="filelist" > 
    <cfquery name="filter_file" dbtype="query" > 
    SELECT * from filelist WHERE datelastmodified < #dateadd("h", -48, now())# AND type = 'File' 
</cfquery> 
    <cfquery name="filter_dir" dbtype="query" > 
    SELECT * from filelist WHERE datelastmodified < #dateadd("h", -48, now())# AND type = 'Dir' 
</cfquery> 
    <cfset path = expandpath('/data/briefcase/')> 

    <cfoutput query="filter_file"> 
    <cfif fileexists('#directory#/#name#')> 
     <cffile action="delete" file="#directory#/#name#" > 
    </cfif> 
</cfoutput> 
<cfoutput query="filter_dir"> 
    <cfif directoryexists('#directory#/#name#')> 
     <cfdirectory action="delete" directory="#directory#/#name#" recurse="true" > 
    </cfif> 
</cfoutput> 
+0

이 솔루션을 사용할 수도 있지만 파일을 스트리밍하고 싶습니다. 그게 가능하니? – Abbadon

2

을 참조하십시오.

관련 문제