2

我们在带有 IIS 6.0 并使用 HTTPS 的 Windows Server 2003 上的 IE-10 中运行 ColdFusion 8。

Test.cfm 页面具有用于创建“浏览”按钮以选择要上传的文件然后上传文件的基本代码:

<CFIF IsDefined("form.Action")>
        <CFFILE ACTION="UPLOAD"
            DESTINATION="D:\Documents\123\"
                  NAMECONFLICT="OVERWRITE"
                  FILEFIELD="Filedata">
    <b>File uploaded.</b> 
<CFSET PathName = "#File.ClientFileName#.#File.ClientFileExt#">
<CFOUTPUT>
    <CFQUERY NAME="Attachments" DATASOURCE="#PriSource#" USERNAME="Test" PASSWORD="Account">
        INSERT INTO V$ATTACH_DOCs
            (ID, DOCNAME, DOCLOCATION)
        VALUES (123, 'Attach1', '#PathName#')
    </CFQUERY>

</CFIF>

<FORM NAME="FileUpLoadNew" id="FileUpLoadNew" action="../TEST/Test.cfm" enctype="multipart/form-data" method="post">
<input type="Hidden" name="Action" value="Upload">
<INPUT TYPE="File" name="Filedata" size="45" maxlength="255">   
<INPUT TYPE="Submit"  NAME="AttachButton"  WIDTH="90" VALUE="Attach">
</FORM>

问题:此代码几乎一直适用于(.txt、.doc、.cfm..sql)等文件类型。它甚至可以处理至少 5-10 Mb 的大文件。但是 .pdf、jpg 和大型 .doc 文件 (4Mb) 会导致它挂起,“等待来自 Our.Site.URL 的响应...”,直到它最终显示“无法显示页面”。

但是,我们有时可以只重新加载页面并选择相同的文件,它会上传正常!然后我们可以重试另一个文件,它可能会也可能不会加载。当文件很小(如 300Kb)时,我们还看到“HTTP 错误 413 请求实体太大”,通常是 pdf 文件。

我们最初认为这是服务器上 UploadReadAheadSize 的设置。我们增加了它,但没有任何效果。

我们还测试了只使用<INPUT TYPE="File" ...><INPUT TYPE="Submit" ...>甚至不调用 CFFILE,我们可以看到相同的问题,即某些文件类型不被接受并且浏览字段不清除并且显示“等待响应...”。我们认为 CFFILE 是问题,但这个测试表明它必须在 IE 或服务器中。我们还尝试使用 FireFox 并得到相同的不一致结果。

似乎服务器在处理 pdf、jpg 和更大的文件时存在问题,但并非总是如此。重新加载页面有时会允许文件加载。但这并不一致。我无权访问服务器来更改设置,但我可以提交更改设置的请求。我们只需要用户上传文件的一致行为。

4

1 回答 1

0

此问题似乎已解决。我们已将服务器上的 UploadReadAheadSize 大小增加到 200KB,但没有任何效果。所以有人建议尝试 20Mb,这远远超过了我们需要附加的任何文档的大小。但是现在所有文件都可以使用上传代码而没有失败。我们已经使用不同大小的文件(最大 10MB)和不同的文件类型以及不同的用户对其进行了测试。现在的反应是一致的。

于 2015-05-27T21:17:34.347 回答