Не используйте action="write"
, используйте action="upload"
.
Пример:
<cffile
action = "upload"
fileField = "ImageData"
destination = "/tmp/uploads"
accept = "image/jpg"
nameConflict = "MakeUnique"
/>
Это поместит файл в /tmp/uploads
(используйте, например, d:/tmp/uploads
в Windows) - это каталог , недоступный онлайн .
На этом этапе вы должны убедиться, что файл соответствует тому, что он утверждает - файл изображения с соответствующими размерами и размером файла, а не заархивированный EXE-файл или встроенный ZIP .
Если вы довольны тем, что файл безопасен для размещения на вашем сервере, вы можете переместить его в соответствующий каталог и задать имя, которое было выбрано.
Что-то вроде ...
<cfif cffile.FileWasSaved>
<cfset UploadedFileName = cffile.ServerDirectory & '/' & cffile.ServerFile />
<cfif NOT IsImageFile( UploadedFileName )>
<cfthrow message="Uploaded file not an image." />
</cfif>
<!--- INFO: Checks if zip embedded in image. --->
<cftry>
<cfzip action="list" file="#UploadedFileName#" name="tmp"/>
<cfthrow message="Embedded zip files not allowed."/>
<!--- TODO: Verify correct exception type for CF: --->
<cfcatch type="java.util.zip.zipexception"></cfcatch>
</cftry>
<!---
TODO: Validate any necessary business rules
(e.g. image not too large, etc)
--->
<cfelse>
<cfthrow message="File Upload Error"/>
</cfif>
<cfif refind('\W',Form.Name)>
<cfthrow message="Invalid Name specified. Only alphanumerics allowed."/>
</cfif>
<cfif NOT ListFindNoCase('PNG,JPG,GIF',Form.ImageType)>
<cfthrow message="Invalid FileType specified. Must be PNG/JPG/GIF"/></cfif>
</cfif>
<cffile
action = "rename"
source = "#UploadedFileName#"
destination = "#sitepath#storage/bannerImages/#Form.Name#.#Form.ImageType#"
/>
Этот код не проверен, и - как и все, что вы запускаете на своих серверах, но особенно это касается кода, включающего загрузку клиента, - убедитесь, что вы понимаете, что он делает, прежде чем его использовать.
Существует много ценной информации о Adobe LiveDocs и о различных блогах CF , которые стоит потратить некоторое время на переваривание.