首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hel图标Ape X-Sendfile与Railo

Hel图标Ape X-Sendfile与Railo
EN

Stack Overflow用户
提问于 2015-01-31 02:18:09
回答 1查看 185关注 0票数 0

我试图在Railo服务器(Windows2012 R2)中使用Helicon的mod_xsendfile。mod_xsendfile功能正确,运行良好,既能传递文件,又能将内容长度值传递给浏览器。在PHP中没有文件大小限制,而且无论文件大小如何,都不需要大量使用服务器内存。

对于Railo,显而易见的首先尝试了

代码语言:javascript
复制
<cfcontent type="text/plain">
<cfheader name="content-disposition" value="attachment; filename=test.txt"/>
<cfheader name="X-Sendfile" value="D:\iis\hello.txt"/>

这不管用。它返回一个空白文件;没有由Helicon生成的错误日志,因此可以安全地假定Header没有正确传递到IIS/。

第二次尝试

代码语言:javascript
复制
<cfheader name="content-disposition" value="attachment; filename=test.txt"/>
<cfset Response = GetPageContext().GetResponse() />
<cfset Response.setHeader('X-Sendfile','D:\iis\hello.txt')>
<cfset Response.setContentType('plain/text')>
<cfset Response.GetOutputStream().Flush() />
<cfset Response.Reset() />
<cfset Response.Finish() />

这适用于

限制1:当文件大小大于2GB时,浏览器返回错误“ERR_INVALID_CHUNKED_ENCODING”--它可以很好地处理较小的文件大小,没有内存问题。(同样,PHP似乎没有这个问题。IIS也没有大小限制)

限制2:不将内容长度传递给浏览器,因此浏览器不知道文件的大小。

第三次尝试:手动添加内容长度。(这在PHP中是不必要的)

代码语言:javascript
复制
<cfset filePath = "D:\iis\246.zip">
<cfheader name="content-disposition" value="attachment; filename=246.zip"/>
<cfset Response = GetPageContext().GetResponse() />
<cfset Response.setContentLength( createObject("java","java.io.File").init( filePath ).length() )>
<cfset Response.setHeader('X-Sendfile', filePath )>
<cfset Response.setContentType('application/octet-stream')>
<cfset Response.GetOutputStream().Flush() />
<cfset Response.Reset() />
<cfset Response.Finish() />

内容长度传递到浏览器,但与PHP不同,IIS试图为文件分配内存,很快就会出现“算术操作溢出或下溢”错误。

我确信我没有正确地处理GetPageContext().GetResponse()。如果有人能帮我,我会非常感激的。

EN

回答 1

Stack Overflow用户

发布于 2015-02-19 22:18:45

如果您使用BonCode连接到IIS,它可以在不重载服务器mem限制的情况下对大型文件进行后台处理。因此,允许高效的流。您需要将FlushThresholdBytes设置添加到BonCode设置中(选中c:\windows),例如:

代码语言:javascript
复制
<FlushThresholdBytes>10240</FlushThresholdBytes>

然而,根据我对Railo的有限理解,它似乎将整个文件加载到内存中,从而限制了您可以流的文件大小。

-John

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28247478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档