2016-07-27 32 views
3

至於其他CFFILE上傳的問題指出,查找CFFILE的源文件路徑上傳

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

是偉大的,實際上做的CFFILE(爲Railo和Lucee之前獲取服務器上的文件名 - 有一個不同方法爲ColdFusion),但我注意到一個有趣的皺紋:如果瀏覽器是IE瀏覽器,那麼這將返回包括文件名的完整源代碼路徑。另一方面,Firefox和Chrome只返回文件名。

對於我的應用程序,我需要完整的路徑,但在瀏覽器爲FireFox或Chrome時無法找到。如果有人有任何想法,我將非常感激!

+1

我不熟悉那種方法。是否應該返回* client *文件屬性或* server *屬性?這聽起來像*客戶端*信息 - 這不是您從服務器端控制的東西。 AFAIK [無論瀏覽器供應商選擇發送什麼](http://stackoverflow.com/questions/2200100/input-type-file-for-ie-gives-full-path-need-file-name-only)。 – Leigh

+0

感謝您的參考 - 具有諷刺意味的是,這張海報想要的與我正在尋找的完全相反! – Mike

+0

你應該包括一個鏈接給你提問以備將來參考。 –

回答

2

(從註釋擴展)

我不熟悉getUploadResource()功能。但是,查看this related thread,聽起來好像它返回客戶端提交的的文件信息。雖然有建議的指導方針,最終the value received on the server is whatever the browser chooses to send。它不是可以被服務器端代碼改變或控制的東西。因此,如果Firefox和Chrome返回與IE不同的東西,那麼您運氣不佳。 (除此之外,我個人總是發現Internet Explorer在這方面有點奇怪,除非使用簽名控件,否則傳統瀏覽器是restricted from certain file access operations for security reasons。因此,您可能預期這些限制會阻止瀏覽器提交信息實際上,大多數瀏覽器都做而不是提交上傳的路徑信息,只有一個文件名。顯然,IE瀏覽器選擇做的事情..不同的..不管是什麼原因)

對於我的應用,我需要完整路徑

話雖如此,爲什麼你需要從客戶端機器

+0

因此,看起來我註定要使用IE瀏覽器(而且我正在將您的答案標記爲正確)。但只是爲了解釋爲什麼我需要這個:我的HD上有一個工作副本,它模仿我的開發和生產服務器上的目錄結構。我編寫了一個腳本,可以將我的工作副本中的文件部署到dev或prod服務器,並保留上傳內容的審計跟蹤。我需要完整的源代碼路徑,以便服務器端代碼可以計算出文件的位置。 – Mike

+0

是的,IE是我用來提供該信息的唯一瀏覽器。順便說一句,我曾與一個傳統系統,有一個土布工具類似的。但是,它不是依靠客戶端路徑,而是使用相對路徑壓縮一個或多個源文件。然後在提取和更新源時使用歸檔路徑。不是最好的方法,但是......支持通過審計來部署多個源文件。 – Leigh

+0

這是一個狡猾的想法! – Mike