2

私は Coldfusion 8 を使用しており、cf_content で 15mo のファイルを提供しようとしています。問題は、ダウンロードがランダムにフリーズすることです。現時点では、ローカルでのみ試したので、ネットワークは問題ではありません。私はより小さなファイルで試してみましたが、フリーズはあまり起こりません。問題の根本がわかりません。ここに私のコールドフュージョンコードがあります:

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

Chrome、IE、およびファイルをダウンロードするためのJavaコードを使用してファイルをダウンロードしようとしました(繰り返しの後に読み取りメソッドでフリーズします)。

Coldfusion を使用してファイルを簡単にストリーミングする方法を教えてください。Javaカスタムタグを使用することは可能かもしれませんが、Responseオブジェクトのカスタムタグ書き込みメソッドでは文字列の書き込みしか許可されていないため、ページにバイトを書き込む方法はありますか?

4

2 に答える 2

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 ファイルを削除するスケジュールされたタスクを作成しました。

    <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>
于 2013-05-10T16:17:05.403 に答える