2011-06-21 44 views
5

我工作的一個GWT項目(Web應用程序):GWT:fileUpload.getFileName()fakepath

在某些時候,用戶可以經由FormPanel中的應用程序上傳文件。

正如我所需要的文件名,我想我可以使用:

FileUpload upload = new FileUpload(); 
    // ... 
    String name = upload.getFileName(); 

而且name原來是這樣的:C:\fakepath\whatever.txt

這是跨平臺嗎?其他操作系統(我正在使用Windows)會發生什麼?

回答

5

上傳表單返回的名稱取決於瀏覽器的安全設置。

在窗口上,C:\ fakepath用於隱藏文件實際位於的位置。但是,文件名始終保留。

在其他os'es上可能會發生同樣的情況,它不會是C:\ fakepath(例如,不會100%確定Linux會返回什麼內容)。

我目前正在使用基於GWT的系統,使用FileUpload;並且文件名在任何使用的客戶端os'es上都沒有錯(只有不同​​的(假的)路徑)。這在Windows,Ubuntu和OS/x上使用。你應該能夠通過在最後的「/」或「\」之間進行分隔來安全地獲取正確的文件名(請注意,這些文件根據操作系統而不同),或者使用getFileName方法。

+3

'C:\ fakepath'前綴是[「by specs」in HTML5](http://www.w3.org/TR/html5/number-state.html#file-upload-state)。如果所有瀏覽器都沒有完成,那麼預計所有操作系統上的所有瀏覽器都會立即更新其行爲。 HTML5規範中的'extractFilename' JavaScript函數很容易移植到Java。 –

相關問題