Непоследовательный ответ с использованием input type="File" с использованием ColdFusion 8
Мы запускаем ColdFusion 8 в IE-10 на Windows Server 2003 с IIS 6.0 и используем HTTPS.
Страница 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 Мб. Но файлы.pdf, jpg и большие файлы.doc (4 МБ) будут вызывать зависание "Ожидание ответа от Our.Site.URL..." до тех пор, пока, наконец, не появится "Страница не может быть отображена".
Однако иногда мы можем просто перезагрузить страницу и выбрать один и тот же файл, и он загрузится нормально! И тогда мы можем повторить попытку другого файла, и он может загружаться или не загружаться. Мы также видели "HTTP-ошибку 413 Request Entity слишком большой", когда файл маленький, например 300 КБ, как правило, с файлом PDF.
Сначала мы думали, что это настройка UploadReadAheadSize на сервере. Мы увеличили это без эффекта.
Мы также протестировали, используя только <INPUT TYPE="File" ...>
а также <INPUT TYPE="Submit" ...>
и даже не вызывая CFFILE, и мы можем видеть ту же проблему, когда определенные типы файлов не принимаются, и поле просмотра не очищается, и оно говорит "Ожидание ответа...". Мы думали, что CFFILE был проблемой, но этот тест показывает, что он должен быть в IE или на сервере. Мы также попытались использовать FireFox и получили те же противоречивые результаты.
Похоже, что на сервере возникают проблемы с файлами PDF, JPG и большими, но не всегда. Перезагрузка страницы иногда позволяет загрузить файл. Но это не соответствует. У меня нет доступа к серверу для изменения настроек, но я могу отправлять запросы на их изменение. Нам просто нужно последовательное поведение для загрузки файлов пользователями.
1 ответ
Эта проблема, похоже, решена. Мы увеличили размер UploadReadAheadSize на сервере до 200 КБ, что не имело никакого эффекта. Поэтому кто-то предложил попробовать 20Mb, что намного превышает размер любого документа, который мы должны прикрепить. Но теперь все файлы работают с кодом загрузки без сбоев. Мы протестировали его с файлами разного размера до 10 МБ, с разными типами файлов и разными пользователями. Ответ теперь соответствует.