我正在使用Coldfusion 8,我正在尝试使用cf_content提供15mo的文件。问题是下载随机冻结。目前,我只在本地尝试,因此网络不是问题。我尝试使用较小的文件,并且不经常发生冻结。我不知道问题的根源。这是我的coldfusion代码:
<cfheader name="Content-Disposition" value="attachment; filename=test.zip">
<cfcontent type="application/zip" file="C:\Test.zip" deletefile="no">
我尝试使用Chrome,IE和一段java代码下载文件来下载文件(在一些迭代后冻结读取方法)。
您是否知道如何使用Coldfusion轻松传输文件?也许有可能使用Java Custom标签但是如何将字节写入页面,因为Response对象的自定义标记写入方法只允许写一个字符串?
答案 0 :(得分: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>
答案 1 :(得分:2)
查看是否有助于在代码前添加代码:
<cfheader name="Content-Length" value="#GetFileInfo('C:\Test.zip').size#">
告诉浏览器需要多少数据。