Coldfusion 文件上载正在执行多次
我试图创建一个表单,用户在其中选择一个位置,然后使用CFFILE ACTION=upload上传文档。我在这方面不是很在行,所以您能提供的任何帮助都将不胜感激 下面是我的代码。本质上,有一个文件夹位置的下拉列表。用户首先选择其中一个位置。然后单击“浏览”选择一个文件。最后,他们点击提交,文件上传 dir代码是链接到每个位置名称的文件夹位置。现在发生的事情是文档成功上传。。。但它正在上载到所有文件夹位置,而不是从下拉列表中选择的位置。这是我的密码: docuploads.cfmColdfusion 文件上载正在执行多次,coldfusion,Coldfusion,我试图创建一个表单,用户在其中选择一个位置,然后使用CFFILE ACTION=upload上传文档。我在这方面不是很在行,所以您能提供的任何帮助都将不胜感激 下面是我的代码。本质上,有一个文件夹位置的下拉列表。用户首先选择其中一个位置。然后单击“浏览”选择一个文件。最后,他们点击提交,文件上传 dir代码是链接到每个位置名称的文件夹位置。现在发生的事情是文档成功上传。。。但它正在上载到所有文件夹位置,而不是从下拉列表中选择的位置。这是我的密码: docuploads.cfm 我希望这是有意义的
我希望这是有意义的-有人能解释一下如何让它工作吗?我假设您没有发布完整的代码,因为您的clientDirectory/clientFile上面的代码中似乎没有源代码 我收集了一个可能是什么样的样本。为了便于阅读,我还将上传例程从代码主体移到了顶部
<CFIF IsDefined("form.upload_now")>
<CFIF structKeyExists(form, "ul_path") and len(form["ul_path"])>
<!--- assuming you need to lookup info from the database --->
<cfquery name="getThisLocation">
SELECT FolderID, FolderName, dir
FROM Locations
where foldername=#form.folderid#
</cfquery>
<CFFILE ACTION="UPLOAD" FILEFIELD="ul_path"
DESTINATION="C:\Documents\#getThisLocation.dir#\"
NAMECONFLICT="OverWrite">
<CFSET ClientFilePath = "#getThisLocation.clientDirectory#\##getThisLocation.clientFile#">
</CFIF>
</CFIF>
<cfquery name="getLocation">
SELECT *
FROM Locations
ORDER BY FolderName
</cfquery>
<form action="docuploads.cfm" method="POST" enctype="multipart/form-data" name="upload_form" id="upload_form">
<CFIF IsDefined("form.upload_now")>
<CFIF structKeyExists(form, "ul_path") and len(form["ul_path"])>
<P>FILE UPLOADED</P>
</CFIF>
</CFIF>
<select name="folderID">
<option value="">--- Select Folder ---</option>
<cfoutput query="getLocation">
<option value="#FolderName#"">#FolderName#</option>
</cfoutput>
</select>
<br /><br />
Click on the Browse button to select the file to Upload:<br>
<input type="file" name="ul_path" id="ul_path" style="height: 22px;width: 350px;" value=""><br><br>
<input type="submit" name="upload_now" id="upload_now" value="Submit" style="height: 22px;">
<input type="button" name="clear" value="Clear" style="height: 22px;">
<br /><br /><br />
</form>
我还添加了一段代码,让用户知道文件已上载。请尝试以下操作:
<CFIF IsDefined("form.upload_now")>
<CFIF structKeyExists(form, "ul_path") and len(form["ul_path"])>
<CFFILE ACTION="UPLOAD" FILEFIELD="#form.ul_path#"
DESTINATION="C:\Documents\#dir#\"
NAMECONFLICT="OverWrite">
<CFSET ClientFilePath = "#clientDirectory#\#clientFile#">
</CFIF>
<cfoutput>file uploaded successfully</cfoutput>
</CFIF>
<cfquery name="getLocation">
SELECT *
FROM Locations
ORDER BY FolderName
</cfquery>
<form action="docuploads.cfm" method="POST" enctype="multipart/form-data" name="upload_form" id="upload_form">
<select name="folderID">
<option value="">--- Select Folder ---</option>
<cfoutput query="getLocation">
<option value="#FolderName#"">#FolderName#</option>
</cfoutput>
</select>
<br /><br />
Click on the Browse button to select the file to Upload:<br>
<input type="file" name="ul_path" id="ul_path" style="height: 22px;width: 350px;" value=""><br><br>
<input type="submit" name="upload_now" id="upload_now" value="Submit" style="height: 22px;">
<input type="button" name="clear" value="Clear" style="height: 22px;">
<br /><br /><br />
上传在一个循环中,这就是为什么上传到每个位置。您需要从该块中拉出,并从用户的选择中指定dir。如果这是完整的代码,那么循环是一个问题,但是未声明的变量将导致更多错误。这些变量是在cffile范围内定义的。看@Jen-也就是说,您应该真正地确定范围以避免意外的命名冲突。另外,您通常希望使用serverXXX变量,即cffile.serverFile、cffile.serverDirectory而不是client.Hello!非常感谢您的回复。如果我手动输入了目标路径,但它没有从数据库中获取路径,那么代码工作得非常好。六羟甲基三聚氰胺六甲醚!再次感谢你!嗨,史蒂夫-你提供的代码非常有用。非常感谢。问题似乎与-where foldername=form.foldername有关,因为我遇到了未定义的错误。当我用定义它时,它仍然没有帮助。当我更改它时,页面可以工作,但文档仅上载到第一个选择-当我选择其他位置时,没有骰子:尝试以下操作:将选择框从folderID重命名为foldername。这就是您存储路径的地方吗?我的印象是,您的folderID值是一个数据库表中的主键值,该表列出了其中的路径。这就是为什么我把这个问题放在顶部。我以为你需要查找你的路径。如果您将完整路径存储在folderid中,那么您可以引用它。在我的数据库中,我有folderid主键,文件夹名称,目录路径,例如/alldocs/training/我猜这是不可能做到的。我仍在获取-元素READTITLE在表单中未定义。错误发生在26:SELECT*27:FROM Reads 28:WHERE folderName=form.folderName感谢您的帮助-非常感谢-这件事太令人沮丧了您好,我稍微更新了我的代码,以反映所使用的表单变量和数据库变量。至于获取form.readtitle时出现的错误,您必须具有原始帖子中未提及的其他代码。听起来您的表单上缺少一个文本框。
<CFIF IsDefined("form.upload_now")>
<CFIF structKeyExists(form, "ul_path") and len(form["ul_path"])>
<CFFILE ACTION="UPLOAD" FILEFIELD="#form.ul_path#"
DESTINATION="C:\Documents\#dir#\"
NAMECONFLICT="OverWrite">
<CFSET ClientFilePath = "#clientDirectory#\#clientFile#">
</CFIF>
<cfoutput>file uploaded successfully</cfoutput>
</CFIF>
<cfquery name="getLocation">
SELECT *
FROM Locations
ORDER BY FolderName
</cfquery>
<form action="docuploads.cfm" method="POST" enctype="multipart/form-data" name="upload_form" id="upload_form">
<select name="folderID">
<option value="">--- Select Folder ---</option>
<cfoutput query="getLocation">
<option value="#FolderName#"">#FolderName#</option>
</cfoutput>
</select>
<br /><br />
Click on the Browse button to select the file to Upload:<br>
<input type="file" name="ul_path" id="ul_path" style="height: 22px;width: 350px;" value=""><br><br>
<input type="submit" name="upload_now" id="upload_now" value="Submit" style="height: 22px;">
<input type="button" name="clear" value="Clear" style="height: 22px;">
<br /><br /><br />