php - 在php中对上传文件的哈希内容

标签 php laravel laravel-5 hash dropzone

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

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

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

我的解决方案是散列每个文件的内容并将其存储在数据库中的文件名旁边。

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

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

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

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

提前致谢。

最佳答案

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

做这样的事情:

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
}

关于php - 在php中对上传文件的哈希内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782433/

相关文章:

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 如何在 Laravel Nova 资源标题中使用 html

php - 如何在 laravel 5 的命名空间路径中生成 laravel 请求

laravel - Tymon\JWTAuth::toUser 错误:需要 token

Laravel 5 命令调度程序,如何传入选项

php - 有没有办法(在 PHP 中)检测脚本是否被 jQuery 加载调用?

javascript - AJAX onreadystatechange 在状态更改后执行?

php - 预期响应代码 250 但得到代码 "535",消息“535-5.7.8 用户名和密码不被接受

mysql - 用户 'homestead' @'localhost' 的访问被拒绝

javascript - PHP 和 jQuery 与 AJAX 上传不工作