CFfile - значение не соответствует запрашиваемым данным
У меня есть эта форма добавления пользователя, она также используется для редактирования формы пользователя путем запроса данных и установки значения ="#query.xvalue#". Если пользователь существует (например, вы редактируете пользователя, он загружает данные пользователей из базы данных. При этом <cffile
Если поле не загружается в данные, то при вставке для вставки данных значения базы данных перезаписываются пустой строкой (если пользователь не вводит новый файл). Как мне избежать этого?
Код:
Форма:
<br/>Digital Copy<br/>
<!--- If null, set a default if not, set the default to database default --->
<cfif len(Trim(certificationsList.cprAdultImage)) EQ 0>
<cfinput type="file" required="no" name="cprAdultImage" value="" >
<cfelse>
File Exists: <cfoutput><a href="#certificationsList.cprAdultImage#">View File</a></cfoutput>
<cfinput type="file" required="no" name="cprAdultImage" value="#certificationsList.cprAdultImage#">
</cfif>
Обработчик форм:
<!--- Has a file been specificed? --->
<cfif not len(Trim(form.cprAdultImage)) EQ 0>
<cffile action="upload" filefield="cprAdultImage" destination="#destination#" nameConflict="makeUnique">
<cfinvokeargument name="cprAdultImage" value="#pathOfFile##cffile.serverFile#">
<cfelse>
<cfinvokeargument name="cprAdultImage" value="">
</cfif>
CFC
ARGS:
<cfargument name="cprAdultExp" required="NO">
<cfargument name="cprAdultCompany" type="string" required="no">
<cfargument name="cprAdultImage" type="string" required="no">
<cfargument name="cprAdultOnFile" type="boolean" required="no">
Запрос:
UPDATE mod_StudentCertifications
SET
cprAdultExp='#DateFormat(ARGUMENTS.cprAdultExp, "mm/dd/yyyy")#',
cprAdultCompany='#Trim(ARGUMENTS.cprAdultCompany)#',
cprAdultImage='#Trim(ARGUMENTS.cprAdultImage)#',
cprAdultOnFile='#Trim(ARGUMENTS.cprAdultOnFile)#'
INSERT INTO
mod_StudentCertifications(
cprAdultExp,
cprAdultcompany,
cprAdultImage,
cprAdultOnFile
1 ответ
Это на самом деле делает наоборот, что вы хотите. Я верю в то, что вы пытаетесь сказать:
<!--- if the length is greater than 0, assume a file was uploaded --->
<cfif len(Trim(form.cprAdultImage)) GT 0>
file is not empty. do the upload ...
<cfinvokeargument name="cprAdultImage" value="#pathOfFile##cffile.serverFile#">
<cfelse>
<cfinvokeargument name="cprAdultImage" value="">
</cfif>
Редактировать Как в стороне,.. так как все ваши аргументы не являются обязательными, код выглядит немного неловко.
,
Вы не можете реально установить "значение" элемента управления файлом (ограничения безопасности браузера). Поскольку пользователь может загрузить файл в обоих случаях, просто введите данные и отобразите ссылку "просмотр", только если существует предыдущее изображение.
<cfif len(Trim(certificationsList.cprAdultImage))>
File Exists:
<cfoutput><a href="#certificationsList.cprAdultImage#">View File</a></cfoutput>
</cfif>
<cfinput type="file" required="no" name="cprAdultImage">
cprAdultImage = '# Обрезка (ARGUMENTS.cprAdultImage)#',
Логика ОБНОВЛЕНИЯ выглядит немного не так. Если файл не был предоставлен, вы в конечном итоге перезапишите существующее изображение пустой строкой. Чтобы избежать этого, обновляйте это поле только в том случае, если был предоставлен новый файл (т.е. не пустой)
Обработка формы:
<cfif len(Trim(form.cprAdultImage)) GT 0>
<cffile action="upload" filefield="cprAdultImage" destination="#destination#" nameConflict="makeUnique">
<cfinvokeargument name="cprAdultImage" value="#pathOfFile##cffile.serverFile#">
</cfif>
ХФУ АРГС:
<!--- if values are always used in queries, should be required=true --->
<cfargument name="cprAdultExp" required="yes">
<cfargument name="cprAdultCompany" type="string" required="yes">
<cfargument name="cprAdultOnFile" type="boolean" required="yes">
<cfargument name="cprAdultImage" type="string" default="">
запрос
UPDATE mod_StudentCertifications
SET
cprAdultExp='#DateFormat(ARGUMENTS.cprAdultExp, "mm/dd/yyyy")#',
cprAdultCompany='#Trim(ARGUMENTS.cprAdultCompany)#',
<!--- only overwrite the value if a new file was supplied --->
<cfif len(trim(ARGUMENTS.cprAdultImage))>
cprAdultImage='#Trim(ARGUMENTS.cprAdultImage)#',
</cfif>
cprAdultOnFile='#Trim(ARGUMENTS.cprAdultOnFile)#'
WHERE ....
И не забывайте уборку. Удалить все старые файлы...