2012-06-22 58 views
1

上傳帶有超長名稱的文件時遇到此問題 - 我的數據庫字段僅設置爲50個字符。從那以後,我增加了我的數據庫字段長度,但是我希望能夠在上傳之前檢查文件名的長度。以下是我的代碼。驗證返回'85'作爲字符長度。它會爲我上傳的每個不同文件返回相同的計數(其中沒有一個文件名長度爲85)。CFSCRIPT - 如何在上傳之前檢查文件名的長度

<cfscript> 
    missing_info = "<p>There was a slight problem with your submission. The following are required or invalid:</p><ul>"; 
    // Check the length of the file name for our database field 
    if (len(Form["ResumeFile1"]) gt 100) 
    { 
    missing_info = missing_info & "<li>'Resume File 1' is invalid. Character length must be less than 100. Current count is " & len(Form["ResumeFile1"]) & ".</li>"; 
    validation_error = true; 
    ResumeFileInvalidMarker = true; 
    } 
    </cfscript> 

有人看到有什麼不對嗎?

謝謝!

回答

2

在你的問題的措辭中的一個快速澄清。當你的代碼執行時,文件上傳已經發生。該文件駐留在ColdFusion服務器上的臨時目錄中,並且與文件上載相關的表單字段包含該文件的臨時文件名。除了檢查是否指定了文件之外,不直接對該文件執行任何操作,或者您將繞過某些內置的安全性。

想要使用cffile標記和upload actionor equivalent udf)將臨時文件移動到您選擇的文件夾中。此時您可以訪問包含大量信息的結構。通常我會「上傳」到應用程序的臨時目錄中,爲了安全起見,它應該位於webroot之外。

此時您需要對文件進行任何驗證,例如文件名長度,文件類型,文件大小等,如果文件未通過任何檢查,則刪除該文件。如果它通過了所有檢查,那麼您將它移動到它的最終目的地,這可能在webroot內部。

在你的情況下,你會想檢查cffile結構元素clientFile這是原始文件名,包括擴展名(你需要檢查,因爲擴展名不需要存在並且可以是任何長度) 。

+0

感謝您的詳細解答 - 非常好的信息!是的,沒錯,它在技術上已經上傳到服務器 - 我忘了那部分。 – Kirsten

3

http://www.cfquickdocs.com/cf9/#cffile.upload

你上傳的文件後,變量「clientFileName」會給你上傳的文件的名稱,沒有文件擴展名。

在上傳文件之前,讀取文件名的唯一方法是使用JavaScript讀取和解析文件字段中的值(文件路徑)。

+0

感謝您的回答 - 也非常有幫助! – Kirsten

相關問題