目录
北极星书库
实现文件上载需要建立两个文件:
· 一个HTML表单,用于输入文件上载信息。
· 一个包含文件上载代码的cfm文件。
建立用于文件上载的HTML表单
大多数浏览器都支持文件上载。将HTML INPUT标签的类型设为“file”,则浏览器会准备从客户端读取并传输一个文件给服务器。将ENCTYPE属性设为“multipart/form-data”,则服务器会知道表单的提交包含了一个上载的文件。
例子:一个用于文件上载的HTML表单
<FORM ACTION="FileUpload.cfm"
ENCTYPE="multipart/form-data"
METHOD="Post">
<PRE>
File Name: <INPUT NAME="FileName" TYPE="text">
File: <INPUT NAME="FileContents" TYPE="file">
<INPUT TYPE="submit" VALUE="Upload File">
</PRE>
</FORM>
用户可以输入一个文件的路径,或浏览本地的文件系统并选择一个要上载的文件。注意必须将ENCTYPE属性设置为“multipart/form-data”。
建立一个文件上载的程序文件
提交一个文件后,该文件还没有保存到服务器上。它只是被译码然后与其它的表单数据一起被传递给ACTION属性所指的程序文件,在该文件中由CFFILE标签对上载的文件进行解码并保存到服务器上。
例子:上载一个文件
下面例子中的CFFILE标签可以放置在上一例子中所指的“FileUpload.cfm”文件中:
<CFFILE ACTION="UPLOAD"
FILEFIELD="FileContents"
DESTINATION="C:\Web\Uploads\">
如果请求此文件的文件上载表单传递了一个名为keyMemo.doc文件,则该文件在服务器上被保存为:
C:\web\Uploads\keyMemo.doc
要以另外的文件名保存上载的文件,可以在DESTINATION属性中指定新文件名。在下面的例子中,文件“keyMemo.doc”被保存为“UploadedFile.doc”:
<CFFILE ACTION="UPLOAD"
FILEFIELD="FileContents"
DESTINATION="C:\Web\Uploads\UploadedFile.doc">
你也可以将这些属性设置为动态参数。例如,你可以根据数据库查询的结果来设定文件名。
注意:FILEFIELD属性应设定为一个Form字段的名字,而不是Form字段的值,因此不能将字段名括在#号中。
处理文件名冲突
将一个文件保存到服务器上时,有可能已经有另一个同名的文件存在,在这种情况下,利用NAMECONFLICT属性,你可以采取多种处理方法。
例子:解决文件名冲突
在下面的例子中,如果文件上载时发生名字冲突,程序会生成一个唯一的文件名,文件后缀名保持不变:
<CFFILE ACTION="Upload"
FILEFIELD="FileContents"
DESTINATION="C:\Web\Uploads\"
NAMECONFLICT="MAKEUNIQUE">
控制上载文件的类型
对某些应用程序,你也许需要限制上载文件的类型。例如,在一个文档库中,你也许不想接受图形文件。
ACCEPT属性用于限制允许上载的文件类型。指定了ACCEPT属性后,被上载文件的MIME内容类型必须与指定的条件相匹配,否则就会产生错误。ACCEPT属性的值是一列由逗号隔开的MIME数据类型名,其中可以使用通配符。
一个文件的MIME类型决定于浏览器,普通的类型如“image/gif”和“text/plain”等已在浏览器中注册。
例子:限制文件类型
这个CFFILE 只保存GIF格式的图象文件:
<CFFILE ACTION="Upload"
FILEFIELD="UploadFile"
DESTINATION="c:\uploads\MyImage.GIF"
NAMECONFLICT="OVERWRITE"
ACCEPT="image/gif">
这个CFFILE 只保存GIF格式或JPEG格式的图象文件:
<CFFILE ACTION="Upload"
FILEFIELD="UploadFile"
DESTINATION="c:\uploads\MyImage.GIF"
NAMECONFLICT="OVERWRITE"
ACCEPT="image/gif, image/jpeg">
这个CFFILE只保存图象文件,但对其格式没有限制:
<CFFILE ACTION="Upload"
FILEFIELD="UploadFile"
DESTINATION="c:\uploads\MyImage.GIF"
NAMECONFLICT="OVERWRITE"
ACCEPT="image/*">
注意:如果ACCEPT属性被忽略或设为空或设为“*/*”,则所有类型的文件都可以被上载。
前页
目录
北极星书库