Sql 使用Coldfusion上载时存储文件名

Sql 使用Coldfusion上载时存储文件名,sql,coldfusion,upload,filenames,Sql,Coldfusion,Upload,Filenames,我正在尝试将要上载的选定文件的文件名存储到表单上的隐藏输入字段中。我的表格是这样的 <form id="uploadattachment" enctype="multipart/form-data" method="post" action="/governance/attachmentfilestore"> <cfif isDefined("fileUpload")> <cffile action="upload"

我正在尝试将要上载的选定文件的文件名存储到表单上的隐藏输入字段中。我的表格是这样的

<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>

上传
然后将其发送到控制器,控制器将其写入数据库,但我无法找到将文件名存储在“filename”字段中的方法

是否有人可以解决如何用选定要上载的文件名填充字段的问题

我在中添加了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>"/>

在上传文件之前,文件名不可用。这在表单发布后发生。唯一的解决方法是尝试通过AJAX发布文件上传,然后返回文件名

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

    <cfset form.filename = CFFILE.serverfile>

您可以在保存之前找到文件名

铁路:

GetPageContext().formScope().getUploadResource("myFormField").getName()
Adobe:

function getClientFileName(fieldName) {
var tmpPartsArray = Form.getPartsArray();
var clientFileName = "";

if (IsDefined("tmpPartsArray")) {
    for (local.tmpPart in tmpPartsArray) {
        if (local.tmpPart.isFile() AND local.tmpPart.getName() EQ arguments.fieldName) {
            return local.tmpPart.getFileName();
            }
        }
    }

return "";
}
来源:

正如利维米索纳斯所说

GetPageContext().formScope().getUploadResource("myFormField").getName()
适用于Railo(和Lucee),但我注意到一个有趣的问题:如果浏览器是IE,则返回包括文件名在内的完整源路径。另一方面,Firefox和Chrome只返回文件名

对于我的应用程序,我需要完整的路径,但无法找到浏览器是FireFox还是Chrome。如果有人有任何想法,我将不胜感激


(很抱歉没有回复lvmisooners,但我没有声誉点数可回复。)

在上传后获得姓名是我的首选。它更简单,并且给定属性nameColution=“makeunique”,它保证了正确的答案。仅供参考,删除它应该是
。此外,请确保检查文档中的cffile。cffile structure@Webgod中有大量可用的值,如果您单击提供的链接并遵循
action=“upload”
链接或我提供的链接,您将看到
注意:文件前缀已弃用,取而代之的是cffile前缀。不要在新的应用程序中使用文件前缀。
我在另一篇文章中看到她试图帮助您
CFFile.serverFile
good
File.serverFile
bad:)谢谢大家。我知道这一点,但我已经在CF8世界生活了很长时间,我只是出于习惯而打字。谢谢你指引我正确的方向。