<cfquery name="dirs" datasource="devsite" result="mySillyLittleResult">
INSERT INTO folders (name)
VALUES ('New Folder')
</cfquery>
<cfset fileId = mySillyLittleResult["GENERATEDKEY"]>
<cfquery name="file" datasource="helloworld" result="anotherSillyLittleResult">
INSERT INTO myfiles (id, filename)
VALUES ('#fileId#', '#Cffile.ServerFile#')
</cfquery>
<cffileupload
url="upload.cfm"
progressbar="true"
name="myupload"
addButtonLabel = "Add File"
clearButtonlabel = "Clear it"
hideUploadButton = "false"
width=600
height=400
title = "File Upload"
maxuploadsize="20"
extensionfilter="*.jpg, *.png, *.flv, *.txt"
BGCOLOR="##FFFFFF"
MAXFILESELECT=10
UPLOADBUTTONLABEL="Upload now" align="center" />
目前我正在使用Cffileupload批量上传文件。我能够创建INSERT SQL语句,在SQL数据库中创建两个新条目。不幸的是,我在确定如何插入文件名方面也没有成功。有没有人知道有效插入文件名的方法?正如您将在下面看到的,我无法有效地使用Cffile.Server,希望还能将文件名插入数据库。任何见解都会受到欢迎。
错误代码:CFFILE中未定义Element SERVERFILE。
答案 0 :(得分:2)
<cffileupload>
只是表单控件,如<input type = "file">
,您仍需要创建使用<cffile action = "upload" (or action = "uploadall")>
的处理程序。您的错误是因为没有<cffile>
标记而没有cffile结构(请参阅cffile docs)。
符合example in the cffileupload docs。
<cfif isdefined("form.FIELDNAMES")>
<cffile action = "upload" destination = "#ExpandPath('.')#" nameconflict="makeunique">
</cfif>
<cffileupload name="myuploader">
文档中的第二个示例将更有帮助。它很长,所以我不在这里,所以请阅读链接的文档。
您希望将<cffile>
标记放在查询上方,如此
<cfif structKeyExists(form, "fieldNames")>
<cffile action = "upload" destination = "#ExpandPath('[your upload folder]')#" nameconflict="makeunique">
<cfquery name="dirs" datasource="devsite" result="mySillyLittleResult">
INSERT INTO folders (name)
VALUES ('New Folder')
</cfquery>
<cfset fileId = mySillyLittleResult["GENERATEDKEY"]>
<!--- I assume it's the same database with the same data source? --->
<!--- Changed "helloworld" to "devsite" --->
<cfquery name="file" datasource="devsite" result="anotherSillyLittleResult">
INSERT INTO
myfiles (id,
filename)
VALUES (<cfqueryparam cfsqltype="cf_sql_integer" value="#fileId#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#Cffile.ServerFile#">)
</cfquery>
</cfif>
答案 1 :(得分:-1)
要获取文件名的值,请不要使用cffile.serverfile。尝试使用file.serverfile。由于某种原因,CF将对象名称默认为“file”。不要忘记从文件名中删除空格和非法字符。我使用StripAllBut删除所有不良字符。