K_C*_*ruz 0 coldfusion file-upload image cffile
我被我认为是创建功能的相对简单的任务所阻碍,以允许用户将图片上传到服务器目录并且正在寻找一些帮助.
我有一个简单的表单,有一个简单的接口,传递一个名为'imagedata'的变量,它是从文件输入传递的数据,一个名为'name'的变量,它是一个指定的图像名称,以及一个名为'imagetype'的变量,它传递一个文件扩展名.
我在函数(处理程序)中用来保存此文件的代码如下:
<cfset form.imageName = form.name & "." & form.imagetype />
...
<cffile action="write" file="#sitepath#storage/bannerImages/#form.imagename#" output="#form.imageData#" />
Run Code Online (Sandbox Code Playgroud)
这显然不起作用; 它将使用正确的名称保存文件,但不能正确保存文件,也不会呈现为图像.我认为这是相对简单的事情,我认为我忽略了一些东西,因为我在谷歌上找不到任何东西,这很奇怪.帮助解决这个问题将不胜感激.
不要使用action="write",使用action="upload".
例:
<cffile
action = "upload"
fileField = "ImageData"
destination = "/tmp/uploads"
accept = "image/jpg"
nameConflict = "MakeUnique"
/>
Run Code Online (Sandbox Code Playgroud)
这将把文件放入/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#"
/>
Run Code Online (Sandbox Code Playgroud)
该代码未经测试,并且 - 与您在服务器上运行的所有内容一样,但特别是涉及客户端上载的代码 - 确保您在使用它之前了解它正在做什么.
有关Adobe LiveDocs和各种CF博客的大量有价值的信息值得花一些时间消化.
| 归档时间: |
|
| 查看次数: |
3936 次 |
| 最近记录: |