У меня есть страница, на которой пользователь может обновить страницу с 4 изображениями и некоторыми другими полями. Для каждого входного файла уже загружено изображение, и когда они загружают новый, я хочу взять новое изображение, загрузить его, а затем, если загрузка прошла успешно, удалить старое изображение. Однако я получаю эту ошибку.
File /var/www/mywebsite.com/Pics/Sunset3.jpg specified in action delete does not exist.
Файлы существуют в этом каталоге в соответствии с моим ftp. Эти файлы даже отображаются на странице как часть формы в качестве ссылки для пользователя на то, какое изображение уже существует. Я слышал, что невозможно обработать загрузку файла на той же странице, и вам нужно использовать вторичный файл, но эти изображения загружаются при предыдущем посещении страницы, поэтому они не загружаются и не обрабатываются на той же странице. страница.
Вот код, который у меня есть. Переменная tableName правильная, она определена ранее в коде, плюс база данных отражает правильные значения после попытки загрузки, просто обрывается при удалении.
<cfquery name="getPreviousImage" datasource="#Application.datasourceName#">
SELECT
image1, image2, image3, image4
FROM
#tableName#
WHERE
RecordID = '#form.ID#'
</cfquery>
<cfset oldImage1 = getPreviousImage.image1>
<cfset oldImage2 = getPreviousImage.image2>
<cfset oldImage3 = getPreviousImage.image3>
<cfset oldImage4 = getPreviousImage.image4>
<cfset image1 = getPreviousImage.image1>
<cfset image2 = getPreviousImage.image2>
<cfset image3 = getPreviousImage.image3>
<cfset image4 = getPreviousImage.image4>
<cfif #form.image1# NEQ "">
<cffile action="upload" destination="#Application.filePath#Pics/" filefield="image1" nameconflict="makeunique">
<cfif isDefined ("cffile.serverFile")>
<cfset image1Place = #cffile.serverFile#>
</cfif>
<cfif #getPreviousImage.image1# NEQ "" AND #image1Place# NEQ "">
<cffile action="delete" file="#Application.filePath#Pics/#oldImage1#">
</cfif>
</cfif>
<cfif #form.image2# NEQ "">
<cffile action="upload" destination="#Application.filePath#Pics/" filefield="image2" nameconflict="makeunique">
<cfif isDefined ("cffile.serverFile")>
<cfset image2Place = #cffile.serverFile#>
</cfif>
<cfif #getPreviousImage.image2# NEQ "" AND #image2Place# NEQ "">
<cffile action="delete" file="#Application.filePath#Pics/#oldImage2#">
</cfif>
</cfif>
<cfif #form.image3# NEQ "">
<cffile action="upload" destination="#Application.filePath#Pics/" filefield="image3" nameconflict="makeunique">
<cfif isDefined ("cffile.serverFile")>
<cfset image3Place = #cffile.serverFile#>
</cfif>
<cfif #getPreviousImage.image3# NEQ "" AND #image3Place# NEQ "">
<cffile action="delete" file="#Application.filePath#Pics/#oldImage3#">
</cfif>
</cfif>
<cfif #form.image4# NEQ "">
<cffile action="upload" destination="#Application.filePath#Pics/" filefield="image4" nameconflict="makeunique">
<cfif isDefined ("cffile.serverFile")>
<cfset image4Place = #cffile.serverFile#>
</cfif>
<cfif #getPreviousImage.image4# NEQ "" AND #image4Place# NEQ "">
<cffile action="delete" file="#Application.filePath#Pics/#oldImage4#">
</cfif>
</cfif>
<cfquery name="UpdateInfo" datasource="#Application.datasourceName#">
UPDATE
#tableName#
SET
title = <cfqueryparam value="#form.title#" cfsqltype="CF_SQL_VARCHAR" maxlength="250">,
<cfif #image1Place# NEQ "">
image1 = <cfqueryparam value="#image1Place#" cfsqltype="CF_SQL_VARCHAR" maxlength="250">,
</cfif>
<cfif #image2Place# NEQ "">
image2 = <cfqueryparam value="#image2Place#" cfsqltype="CF_SQL_VARCHAR" maxlength="250">,
</cfif>
<cfif #image3Place# NEQ "">
image3 = <cfqueryparam value="#image3Place#" cfsqltype="CF_SQL_VARCHAR" maxlength="250">,
</cfif>
<cfif #image4Place# NEQ "">
image4 = <cfqueryparam value="#image4Place#" cfsqltype="CF_SQL_VARCHAR" maxlength="250">,
</cfif>
body = <cfqueryparam value="#form.body#" cfsqltype="CF_SQL_VARCHAR">
WHERE RecordID = <cfqueryparam value="#form.ID#" cfsqltype="CF_SQL_INTEGER" maxlength="50">
</cfquery>
РЕДАКТИРОВАТЬ: это новая ошибка после того, как я реализовал fileExist(). Кроме того, я вижу, что все эти изображения накапливаются на моем сервере. Я примерно до заката10.jpg среди других фотографий. Если я заставлю этот fileExist работать, не все, что он сделает, это предотвратит отображение ошибки, и удаление никогда не будет выполнено. Потому что эти файлы определенно существуют, если, конечно, я не указываю не то место.
Invalid CFML construct found on line 107 at column 138.
ColdFusion was looking at the following text:
>
The CFML compiler was processing:
An expression beginning with #, on line 107, column 23.This message is usually caused by a problem in the expressions structure.
A cfif tag beginning on line 107, column 18.
A cfif tag beginning on line 107, column 18.
A cfif tag beginning on line 107, column 18.
К сожалению, я не могу включить надежные отчеты об исключениях. Кроме того, эта ошибка отображается при первом переходе на страницу. Прежде чем я даже получу шанс отправить форму. Между тем этот код находится внутри if, который должен выполняться только после заполнения формы.