小编典典

使用Coldfusion上传时存储文件名

sql

我正在尝试将要上传的所选文件的文件名存储到表单上的隐藏输入字段中。我的表格看起来像这样

<form id="uploadattachment" enctype="multipart/form-data" 
       method="post" action="/governance/attachmentfilestore">

  <cfif isDefined("fileUpload")>
        <cffile action="upload"
                fileField="fileUpload"
                accept="application/pdf"
                nameconflict="makeunique"
                destination="#ExpandPath( '/files/governance/upr/' )#">


       <input type="hidden" name="filename" id="filename" value="">
       <input type="hidden" readonly id="uprUUID" name="uprUUID" 
               style="width: 400px" value="<cfoutput>#params.key#</cfoutput>"/>
       <input type="hidden" readonly id="status" name="status" 
               style="width: 400px" value="1"/>
       <input name="fileUpload" type="file" style="width: 200px;" />
       <button type="submit" name="action" 
               class="submitBtn primary rightSubmitBtnSpace">Upload</button>
</form>

然后,将其发送到控制器,该控制器将其写入数据库,但无论如何我都无法找到一种方法来获取要存储在“文件名”字段中的文件名。

有人对您如何使用选择要上载的文件名填充字段有解决方案吗?

我已经在其中添加了CFFILE.serverFile,并且可以运行一次,但是我猜是这样,因为它获取了先前上传的文件名。

现在,在加载页面时,我得到的服务器文件在CFFILE中是未定义的,因此它不允许我使用文件名填充表单。

我的代码现在看起来像这样,尝试并解决它似乎也不管用。

<cfif isDefined("CFFILE.serverFile")>
    <cfset form.filename = CFFILE.serverFile>
<cfelse>
     <cfset form.filename = "null">
</cfif>
<input type="hidden" name="filename" id="filename" 
        value="<cfoutput>#CFFILE.serverFile#</cfoutput>"/>

阅读 236

收藏
2021-04-14

共1个答案

小编典典

文件名直到文件上传后才可用。表单发布后会发生这种情况。解决此问题的唯一方法是尝试通过AJAX发布文件上传,然后返回文件名。

否则,您可以在上传文件并过帐表单后将值分配给该字段。

    <cfset form.filename = CFFILE.serverfile>
2021-04-14