0

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

该文件是用户上传的文件,我想找到它的名称,但如果我使用file_object.path,它会给出文件创建时的名称,而不是当前名称。

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

4

1 回答 1

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返回文件的属性,但没有名称。

于 2012-05-13T01:54:26.907 回答