如果我只有文件对象,如何找到当前文件名?
该文件是用户上传的文件,我想找到它的名称,但如果我使用file_object.path
,它会给出文件创建时的名称,而不是当前名称。
这产生了一个看起来像是一堆随机数字和字母的名字。示例文件是我创建的证书,它是用户将上传的文件类型,因此我想确保显示当前文件名,以免混淆。
如果我只有文件对象,如何找到当前文件名?
该文件是用户上传的文件,我想找到它的名称,但如果我使用file_object.path
,它会给出文件创建时的名称,而不是当前名称。
这产生了一个看起来像是一堆随机数字和字母的名字。示例文件是我创建的证书,它是用户将上传的文件类型,因此我想确保显示当前文件名,以免混淆。
简短的回答是“你不能”。
要理解为什么,在典型的文件系统中,文件只是一个节点(或者在 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
返回文件的属性,但没有名称。