Проблема загрузки файла с кодировкой данных ColdFusion / Linux multipart / form-data - PullRequest
1 голос
/ 12 февраля 2009

Я публикую форму в ColdFusion для Linux. Форма имеет файловое поле. CF требует атрибут enctype = "multipart / form-data" в теге формы. Если у меня есть это, я получаю «Ошибка сервлета JRun - 500 Нет такого файла или каталога»

Если я уберу атрибут, форма отправит сообщение и получит ошибку CF "enctype = multipart / form-data".

Что делать?

Вот урезанная версия формы:

 <form action="post.cfm" name="form2" id="port_form" method="post" enctype="multipart/form-data">
      <input type="text" id="name" name="name" value="#port_name#"><br>
      <input type="file" id="before" name="before"><br>
      <input type="hidden" name="port_id" value="#port_id#" />
      <button type="submit" name="post"> Post Portfolio Item </button>  
 </form>

Вот страница, на которую я отправляю сообщение (post.cfm)

 <cfif form.before neq "">
    <cfinvoke component = "#application.cfcPath#.file" method = "upload" returnVariable = "beforeFile" theField="before">
 <cfelse>
    <cfset beforeFile = ''>
 </cfif>

 <cfif form.after neq "">
    <cfinvoke component = "#application.cfcPath#.file" method = "upload" returnVariable = "afterFile" theField="after">
 <cfelse>
    <cfset afterFile = ''>
 </cfif>    

 <cfinvoke component = "#application.cfcPath#.portfolio" method = "post" beforeFile="#beforeFile#" afterFile="#afterFile#">

 <cfif form.port_id eq 0>
    <cfset message = "The Portfolio Item has been successfully inserted.">
 <cfelse>
    <cfset message = "The Portfolio Item has been successfully updated.">
 </cfif>

 <cf_forward fuseaction="#fusebox.circuit#.home" message="#message#">

Ответы [ 3 ]

1 голос
/ 13 февраля 2009

Возможная причина в том, что сервер не может найти загруженный временный файл.

Вы пытались сделать загрузку без оболочки компонента?

Просто

<cfif StructKeyExists(Form, "before") AND Form.before NEQ "">
<cffile
    action="upload"
    filefield="before"
    destination="#AbsPathToStoreFile#"
    >
</cfif>

<cfdump var="#cffile#">

Если это не удастся, возможно, вы сможете увидеть более подробную информацию.

0 голосов
/ 13 февраля 2009

Мне интересно, является ли временная папка, в которой CF пытается сохранить файл, недоступной (разрешения) или неправильно настроенной.

Вы должны попытаться использовать тег CFFILE и указать папку, к которой у вас есть доступ.

0 голосов
/ 13 февраля 2009

Возможно, вы уже пробовали это, но пробовали ли вы все прописные или строчные буквы в ваших путях и именах файлов? Иногда CF будет портить верхний / нижний регистр.

...