Coldfusion 文件上载正在执行多次

Coldfusion 文件上载正在执行多次,coldfusion,Coldfusion,我试图创建一个表单,用户在其中选择一个位置,然后使用CFFILE ACTION=upload上传文档。我在这方面不是很在行,所以您能提供的任何帮助都将不胜感激 下面是我的代码。本质上,有一个文件夹位置的下拉列表。用户首先选择其中一个位置。然后单击“浏览”选择一个文件。最后,他们点击提交,文件上传 dir代码是链接到每个位置名称的文件夹位置。现在发生的事情是文档成功上传。。。但它正在上载到所有文件夹位置,而不是从下拉列表中选择的位置。这是我的密码: docuploads.cfm 我希望这是有意义的

我试图创建一个表单,用户在其中选择一个位置,然后使用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 />