在php

时间:2017-08-20 12:59:09

标签: php laravel laravel-5 hash dropzone

我有一个上传表单,旁边还有一个Dropzone文件上传器,用户可以上传他们的.csv文件。

我想检查文件是否是新文件。 检查应包含文件内容是否为新的

我将文件名存储在数据库中以检查新文件,但问题是当用户重命名同一文件并再次上传时。

我的解决方案是对每个文件的内容进行哈希处理,并将其存储在数据库中的名称旁边。

但我不知道如何在php,Laravel中散列.csv文件的内容。 我尝试过使用

hash_file('md5' , Request::file('myFileName')->getClientOriginalName());

但会导致找不到文件或流。

无论名称如何,检查新文件的正确方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

计算文件的哈希是一种正确的方法。

做这样的事情:

public function uploadFile() {
    // check if upload is valid file (example: request()->file('myFileName')->isValid() )

    // calculate hash of a file
    $fileHash = sha1_file( request()->file('myFileName')->path() );

    //search for file in database and block same file upload (Files is Elequent model)
    if( Files::where('hash', $fileHash)->firstOrNull() != null) {
        abort(400); // abort upload
    }

    // do something with file and save hash to DB
}