При загрузке файла с помощью cfhttp добавляется новая строка (даже в двоичных файлах)

Обновление : Я нашел обходной путь. Если я отправлю фиктивное поле формы вместе с файлом, оно будет работать. Это ошибка ColdFusion или в спецификации HTTP сказано, что формы должны содержать хотя бы одно нефайловое поле формы?

Обновление 2 : Я убежден, что это ошибка cfhttp ColdFusion. Это основано на ответе Ли и на том факте, что я использовал приведенный ниже код для отправки формы с только элементом файла с использованием javascript, и он отлично работает:

<form enctype="multipart/form-data" action="<cfoutput>#CGI.PATH_INFO#</cfoutput>" method="POST" name="theForm">
  <input name="theFile" type="file" /><br/>
</form>
<a href="#" onclick="document.theForm.submit()">submit</a>

I ' m столкнулся с проблемой загрузки файлов с сервера ColdFusion на другой веб-сервер. Похоже, что cfhttpparam type = "file" без разбора добавляет новую строку (возврат каретки и перевод строки) в конец файла. Это нарушает работу двоичных файлов. Этого не не происходит, когда я вручную загружаю файл через поле формы. Я пробовал с параметром mimetype и без него, и я пытался солгать о mimetype с различными двоичными форматами (exe, zip, jpg), но ничего не сработало. Есть ли какой-то параметр, который мне не хватает, или это ошибка ColdFusion? (Я использую CF 8.0.1.195765 на WinXP.)

Ниже приведен тестовый код, который я использую, он просто загружает файл в тот же каталог. Ручная загрузка работает, но серверная загрузка завершается добавлением CRLF к файлу.

<cfset MyDir = "C:\test" />
<cfset MyFile = "test.zip" />

<cfif IsDefined("Form.TheFile")>
  <cffile action="upload" fileField="theFile" destination="#MyDir#" nameConflict="MakeUnique" />
<cfelse>
  <cfhttp url="http://#CGI.SERVER_NAME##CGI.SCRIPT_NAME#" method="POST" throwOnError="Yes">
    <cfhttpparam type="file" name="theFile" file="#MyDir#\#MyFile#" />
  </cfhttp>
</cfif>

<html><body>
<h2>Manual upload</h2>
<form enctype="multipart/form-data" action="<cfoutput>#CGI.PATH_INFO#</cfoutput>" method="POST">
  <input name="theFile" type="file" /><br/>
  <input type="submit" value="Submit" />
</form>
</body></html>
6
задан Kip 18 September 2010 в 21:21
поделиться