2012-06-20 62 views
0

我有一個用戶正在插入文件名的輸入字段。然後用這個名字創建文件。問題在於不同操作系統上的文件系統之間存在差異。在用戶方面,我有一個JavaScript的正則表達式。它是:Rails中的跨平臺文件名

/^[0-9a-zA-Z\^\&\'\@\{\}\[\]\,\$\=\!\-\#\(\)\.\%\+\~\_ ]{1,228}$/ 

它只允許使用字母數字字符和指定的符號。此外,我需要我的服務器端代碼來嘗試創建文件(如UNIX/LINUX操作系統中的觸摸命令),並在出現任何錯誤時處理錯誤。我如何在Ruby上做到這一點?跨平臺產品有更好的解決方案嗎?

+0

你真的需要使用他們選擇的文件名嗎?難道你不能只將他們的名字存儲在你的數據庫中,並選擇任何文件名稱方便嗎? –

+0

我不是那個做出決定的人:) –

+0

當他們在一個字符類中時(換言之:/^[\ w ^&'@ {} \ [\],$ =!#()。%+〜_ - ] {1,228} $ /) – pguardiario

回答

0

我已經解決了當文件名無效併爲用戶打印時捕捉異常的問題。

begin 
    touch_file = open("#{@base_dir}#{file_name}", 'w') 
    if touch_file 
     #here goes code for opening file and inserting some text into it 
    end 
    rescue Exception => msg 
      #here I return msg.message to user 

end