使用Coldfusion上传时存储文件名

Cha*_*525 3 sql coldfusion upload filenames

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

<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>
Run Code Online (Sandbox Code Playgroud)

然后将其发送到控制器,控制器将其写入数据库,但我无法找到一种方法来获取要存储在"文件名"字段中的文件的名称.

有没有人有一个解决方案,如何使用选择上传的文件的名称填充字段?

我已经添加了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>"/>
Run Code Online (Sandbox Code Playgroud)

Sol*_*r04 5

在上载文件之前,文件名不可用.发布表单后会发生这种情况.解决这个问题的唯一方法是尝试通过AJAX发布fileupload然后返回文件名.

否则,您可以在上载文件并发布表单后将值分配给字段.

    <cfset form.filename = CFFILE.serverfile>
Run Code Online (Sandbox Code Playgroud)

  • @Webgod,如果单击Leigh提供的链接并按照`action ="upload"链接或我给出的链接,您将看到`注意:文件前缀已弃用,支持cffile前缀.不要在新的应用程序中使用文件前缀.我看到她试图在另一篇文章中帮助你.`CFFile.serverFile`好.`File.serverFile`坏:) (2认同)