2012-06-20 61 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