2012-04-30 42 views
23

我得到的文件名稱冒號上傳文件的客戶錯誤,即C:/uploads/test : doc.html如何在文件名中使用冒號在Windows中獲取文件?

我假設某些Unix或Linux系統正在生成文件,但我不知道用戶如何保存它們與無效的文件名。我編寫了一個應該在上傳時重命名文檔的文章。我的問題是我無法測試它,因爲我無法在Windows上獲得文件名中含有冒號的文件。

+6

有幾個字符在Windows文件名中是不允許的,冒號就是其中之一。抱歉。 –

+5

P.S.無效字符的完整列表在這裏:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#file_and_directory_names –

+1

這可能可以做到這一點本機API或設備驅動程序。但是,您將無法從Windows應用程序上載文件,或者確實無法使用它進行任何其他操作。 –

回答

29

我發現一個非常類似於冒號的字符,「꞉」它是一個名爲修飾符冒號的unicode字符。這沒有像全角冒號那樣的空間,幾乎和普通冒號一樣,但符號起作用。您可以從上面複製並粘貼它,或者您可以使用代碼點,U + A789

9

冒號是Windows文件名的無效字符。您將無法在文件名中使用':',但可以解決此問題。

你可以做它聽起來像你已經做了什麼;創建一個腳本,用UNIX端的有效字符替換這些無效字符。或者,您可以使用文件名字符轉換在Windows服務器上處理此問題:http://support.microsoft.com/kb/289627

+1

我相信我已經通過重新命名文件上傳的方式解決了這個問題,但我需要以某種方式將一個文件放到帶有冒號文件名的Windows機器上。我們的客戶在某種程度上這樣做,所以它一定是可能的。 – David

+0

@David:是什麼讓你認爲你的客戶正在這樣做?你確定上傳來自Windows機器嗎? –

+1

小心 - 你可以創建一個名爲FOO:BAR的東西,但是你得到的是一個名爲FOO的文件,其中包含一個名爲BAR的數據流(以及未命名的數據流)。在目錄列表中,您只會看到FOO。 – dave

3

很可能來自您提供的文件名中的字符不是文字冒號:,它是一個保留字符在Windows文件名中,但是全角冒號取而代之。這是一個Unicode字符,看起來非常像一個冒號,在視覺上被無法刪除的空格包圍。您可以像處理任何Unicode字符一樣處理它,代碼點爲U+FF1A

+1

這不解決OP的問題;雖然建議非常好,但您應該將其置於評論中以提問*或*在Jeopardy中以問答形式提問/回答此問題,首先詢問「如何在Windows文件名中使用冒號?」問題,選擇問答式答案並在那裏提供這些信息。 – vaxquis

+1

@vaxquis:相反,我認爲這可能確實是OP的問題的原因;他認爲他想要處理的文件名有冒號,但可能是全角冒號。 –

+1

@HarryJohnston在這種情況下,我正在編輯問題以明確包含此信息 – vaxquis

相關問題