如何从文件对象中找到当前文件名?

时间:2012-05-13 01:45:32

标签: ruby-on-rails ruby

如果我拥有的是文件对象,如何找到当前文件名?

该文件是用户上传的文件,我想查找其名称,但是,如果我使用file_object.path,则会将该文件的名称设为,而不是当前名称。

这产生了一个看似随机数字和字母的名字;示例文件是我创建的证书,它是用户将上传的文件类型,因此我想确保显示当前文件名,以免混淆。

1 个答案:

答案 0 :(得分:2)

简短的回答是“你不能”。

要理解为什么在典型的文件系统中,文件只是一个节点(或者在Unix / Linux中,一个inode),可以被许多链接引用,我不是在谈论符号链接。

例如:

$ echo "i am foo" > foo
$ cat foo
i am foo
$ ln foo bar    # this is a hard link, not a symlink
$ rm foo
$ cat bar
i am foo
$ rm bar
$ cat bar
cat: bar: No such file or directory
$ cat foo
cat: foo: No such file or directory

事实上,如果你看一下File :: Stat的Ruby文档......

http://www.ruby-doc.org/core-1.9.3/File/Stat.html

...你会看到有一个方法nlink可以返回文件的硬链接数。 您还会看到有一个方法inspect,它返回文件的属性,但没有名称。