dsijak/sharefile

使用访问令牌保护文件共享。

v0.3 2021-06-06 13:14 UTC

This package is auto-updated.

Last update: 2024-09-06 20:45:01 UTC


README

使用访问令牌保护文件共享。

在使用前配置 vendor/dsijak/sharefile/project/Etc/config.php
DS_SF_MODE 模式设置为 production 将禁用浏览器错误日志输出。

安装

        composer require dsijak/sharefile

使用方法

首先在 config.php => DS_SF_FILE_DIR 中设置包含文件的目录。此
目录不应通过 URL 访问。

获取文件项

        $accessToken = $sharefile->acquireItem('vid.mp4');

文件必须存在,且在 config.php 中指定了允许的文件类型。
acquireItem 方法将文件、密钥和密钥过期数据存储到
sqlite/mariadb 数据库。 acquireItem 方法返回访问令牌或密钥。
之后,您可以向任何希望访问
获取的文件的人发送此密钥/令牌。

获取文件项

        $sharefile->obtainItem('vid.mp4', 'f8b32a778acfaaaa');

这将生成包含在浏览器内的新的文件头。
obtainItem 方法必须从新的路由或重定向后执行。
如果密钥已过期,则只会生成文本消息。

这有什么用?

例如,当您在销售数字商品时。当有人购买您的
照片或电子书时,您可以向他们发送文件密钥。密钥将仅在
您在 config.php 中指定的有效时间内有效。

例如,您可以发送链接 yoursite.com/obtainItem?filename=vid.mp4&key=f8b32a778acfaaaa 然后您可以获取文件和密钥参数

        $sharefile->obtainItem($filename, $key);

这将生成获取的文档或包含消息的文本文档。

错误消息

acquireItemobtainItem 方法都接受一个额外的引用
参数以传递回错误消息。

        $errorMessage = '';
        $accessToken = $sharefile->acquireItem('ebook.pdf', $errorMessage);

        if (!$accessToken)
        {
            error_log($errorMessage);
        }

简短的使用示例

        use Sharefile\Sharefile;
        
        $sharefile = new Sharefile();
        $errorMessage = '';
        $accessToken = $sharefile->acquireItem('vid.mp4', $errorMessage);
        if (!$accessToken)
        {
            error_log($errorMessage);
        }

        $sharefile->obtainItem('vid.mp4', $accessToken);
        //renders file

MySQL 使用

运行此查询

        CREATE DATABASE ds_sharefile; 
        CREATE USER 'ds_sharefile'@'localhost' IDENTIFIED BY 'ds_sharefile';
        GRANT ALL ON ds_sharefile.* TO 'ds_sharefile'@'localhost';
        USE ds_sharefile;

编辑: vendor/dsijak/sharefile/project/Etc/config.php
DS_SF_MODEL_TYPE 设置为 mariadb
数据库用户/密码也在这里设置。
要使用现有的 PDO 对象,将其与数据库名称一起传递给构造函数

        $sharefile = new Sharefile($pdoObj, 'myDatabaseName');

高级方法

这些方法返回数据/null 或 true/false。
您可以通过 advanced 属性获取高级方法

        $x = $sharefile->advanced->databaseCreatedAt($errorMessage);

方法

fileExists($filename, &$eMessage=null)
检查文件是否存在。

emptyDatabase(&$eMessage=null)
从数据库中删除所有获取的项。

databaseCreatedAt(&$eMessage=null)
返回创建日期。

generateFileKey($filename, &$eMessage=null)
为文件名生成密钥并存储一切。

deleteKey($key, &$eMessage=null)
如果存在,则删除密钥。

getGeneratedFileKeyRecord($filename, $key, &$eMessage=null)
如果存在,则返回密钥/文件名。

isKeyValid($filename, $key, &$eMessage=null)
检查密钥/令牌是否有效。

generateBase64ImageFile($filename, &$eMessage=null)
生成带有 base64 图像的 html img 元素。此功能旨在与图像一起使用。

generateHeaderFile($filename)
生成作为 HTTP 响应的文件。

generateHeaderMessage($message)
生成包含 $message 的文本文件作为 HTTP 响应。

享受乐趣

在 5.4.118-1-manjaro/xfce/docker/portainer 下开发和测试