Странная проблема формы: не работает cffile - PullRequest
1 голос
/ 27 июля 2010

Хммм ... странные проблемы ...

Я делаю форму для загрузки учебных программ. По сути, кто-то идет искать курс и нажимает кнопку рядом с курсом с надписью «Загрузить программу». Далее появится всплывающее окно с предложением указать файл. Я передаю информацию этой страницы, чтобы вставить URL в базу данных и т. Д.

<input name="upload" type="button" value = "Upload Syllabi" id = "uploads" onclick = "window.open('upload_syllabi.cfm?course=#course#&semest=#semester#&ref=#refnum#','popup','width=350,height=170,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0')"/>

Передано на эту страницу:

<cfset session.semester = #url.semest#>
<cfset session.course = #url.course#>
<cfset session.ref = #url.ref#>



    <form name = "uploadForm" enctype = "multipart/form-data" action = "upload_action.cfm">
    <table align="center" class = "contenttable">
      <tr>
        <td><h3>Upload Syllabi for <cfoutput><b>#session.semester# #session.course# #session.ref#</b></cfoutput></h3> </td>
      </tr>
      <tr>
        <td align="center">
    <input name="syllabiUpload" id = "uploader" type="file" />

    </td>
      </tr>
      <tr>
        <td align="center">
          <input type="submit" name="uploaded" id="uploaded" value="Upload" />
        </td>
      </tr>
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td align="center"><a href="javascript:window.close();">[close]</a></td>
      </tr>
    </table>
    </form>

У меня изначально не было переменных сеанса ... но у меня были некоторые проблемы с url.semest ... и я только что оставил их там.

В любом случае ... когда форма отправлена, она должна перейти на эту страницу: upload_action.cfm

<cffile action="upload" filefield="syllabiUpload" destination="#SyllabiLoc#" nameconflict="makeunique">
<cfset SyllabiURL = "#SyllabiPath##cffile.serverfile#">

<cfquery name="checkSyllabi" datasource="#sacsds#" username="#sacsuser#" password="#sacsuser#">
SELECT  *
FROM    faculty.dbo.Syllabi
WHERE   faculty.dbo.syllabi.Semester = '#session.semester#' 
AND     faculty.dbo.syllabi.Refnum = '#session.ref#'
</cfquery>

    <cfif getSyllabi.recordCount is 0>
    <cfelse>
    <cffile action="delete" file = "#checkSyllabi.url#">   
    </cfif>

    <cfquery name="updateSyllabi" datasource="#sacsds#" username="#sacsuser#" password="#sacsuser#">
    UPDATE faculty.dbo.Syllabi
    SET url = '#SyllabiURL#'
    WHERE Semester = '#session.semester#' 
    AND  Refnum = '#session.ref#'
    </cfquery>
 <table align="center">
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Uploaded</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>

</table>

Я получаю эту ошибку, когда нажимаю кнопку отправки:

Недопустимый тип содержимого: ''. Действие cffile = "upload" требует, чтобы формы использовали enctype = "multipart / form-data".

Довольно странно ... потому что у меня определенно есть эта строка кода в моей форме ...

гм ....

РЕДАКТИРОВАТЬ: продолжить проблему # 2.

Получение этой ошибки:

Файл D: \ ColdFusion8 \ runtime \ servers \ coldfusion \ SERVER-INF \ temp \ wwwroot-tmp \ http://uwf.edu/acad/Syllabi/Introduction для морских исследований Syllabus2.rtf, указанный в действии delete, не существует.

Я сделал удаление файла неправильно? : \ Не уверен ..

1 Ответ

2 голосов
/ 27 июля 2010

может быть проблема с браузером, или у вас есть какой-то антивирус, прокси или брандмауэр, портящий загрузку. Как вы говорите, вы говорите браузеру использовать правильную кодировку настолько предположительно, что где-то теряется в переводе.

Вариант 2: вы видите кэшированные страницы, а не версию с правильной формой. Попробуйте очистить кеш браузера.

РЕДАКТИРОВАТЬ: На самом деле проблема проста. Вы не сказали ему использовать method = "POST" в форме.

...