ColdFusion:在上傳之前獲取文件的名稱


Answers

在調用cffile之前,我不知道有什麼方法可以找到,但可能有解決方法。

當您調用<cffile action="upload"> ,可以使用result="variable"指定結果。 所以,把目標文件作為臨時文件調用上傳。 您的結果變量是一個包含成員clientFile的結構,它是客戶端計算機上文件的名稱。

現在,您可以使用<cffile action="move">來執行您需要使用原始文件名的任何操作。

Question

在我打電話之前,怎樣才能得到文件的文件名?

<cffile action = "upload">

? 我可以得到臨時文件的文件名,但不是實際的文件名。 在PHP的土地上,我可以使用$ _FILES超全球得到我想要的 - 但據我所知,在ColdFusion中不存在這樣的事情。

我可以得到文件名客戶端,但真的想做這個服務器端。

謝謝




在ColdFuson,Railo或OpenBD中保存到服務器之前,無法知道上傳文件的文件名。 我通常在保存文件之前使用createUUID()函數生成“我的”新文件名。




哇,我發現一個偉大的和簡單的解決方案! 用一點JavaScript

通過這種方式,您可以獲取cffile上傳的臨時文件名以及數據庫的實際file.jpg名稱

<html>
<head>
<script type="text/javascript">
function PassFileName()
{
document.getElementById("fileName").value=document.getElementById("fileUp").value;
}
</script>
</head>
<body>
<form name="form1" method="post" enctype="multipart/form-data" >
File: <input type="file" name="fileUp" id="fileUp" size="20" onchange="PassFileName()" /> <br />
Title: <input type="text" name="Title" id="Title"><br />
<input type="hidden" id="fileName" size="20" name="fileName" />
<input type="submit" name="submit">
</form>
</body>
</html>



另一個選擇可能是讓客戶端代碼使用文件名填充隱藏的表單字段,然後在服務器端添加。

不過,本·杜姆的回答總的來說就是我如何接近它。