File Laravel文件上载和文件散列作为名称

File Laravel文件上载和文件散列作为名称,file,laravel,hash,File,Laravel,Hash,我能够使用Laravel存储和文件系统类成功上传文件 我的问题是我想通过其内容唯一地标识文件 我在想,当我在服务器上保存文件时,我会用内容的散列重命名上传的文件 问题是是否有一种方法可以获取文件内容的散列。 另一个复杂性是它是一个excel文件 注意:我尝试使用md5_文件来使用文件散列,但对于xlsx文件,即使我保存文件而不进行任何更改,md5_文件也不相同 谢谢, K注意:从Laravel 5.4开始,hashName()函数不再基于文件的内容哈希生成文件名。要完成此操作,您需要手动使用md

我能够使用Laravel存储和文件系统类成功上传文件

我的问题是我想通过其内容唯一地标识文件

我在想,当我在服务器上保存文件时,我会用内容的散列重命名上传的文件

问题是是否有一种方法可以获取文件内容的散列。 另一个复杂性是它是一个excel文件

注意:我尝试使用md5_文件来使用文件散列,但对于xlsx文件,即使我保存文件而不进行任何更改,md5_文件也不相同

谢谢,
K

注意:从Laravel 5.4开始,
hashName()
函数不再基于文件的内容哈希生成文件名。要完成此操作,您需要手动使用
md5\u file()


散列答案 Laravel在文件上传程序上有一个名为
hashName()
的方法,该方法根据生成“文件名,即内容的MD5哈希”。我最近在一个项目中使用了它来完成您正试图使用它和
md5_file()
来完成的工作。下面是一个我如何完成的示例:

看法

{!!csrf_field()!!}
上传文件
控制器
查找
hashName()
方法的源代码,如果我没有弄错的话,它不会对内容进行md5。它只是返回
Str::random(40)
作为散列部分。@Jonathan你是对的,这看起来像是在这个答案发布后在Laravel 5.4中更改的。我会相应地更新它。谢谢,我想你清楚地回答了我原来的问题,我将能够使用你的方法,因为我需要它在我的Lravel5.1项目之一,但excel仍然是一个问题。