dsijak / sharefile
使用访问令牌保护文件共享。
Requires
- php: >=7.0
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);
这将生成获取的文档或包含消息的文本文档。
错误消息
acquireItem
和 obtainItem
方法都接受一个额外的引用
参数以传递回错误消息。
$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 下开发和测试