artur-gajewski / file-bank
一个用于将文件及其元数据、关键词和状态信息上传到文件库的Zend Framework 2模块,并提供一个控制器以供下载已保存的文件。
Requires
- php: >=5.3.3
- doctrine/doctrine-orm-module: ~0.7
- zendframework/zendframework: 2.*
This package is not auto-updated.
Last update: 2024-09-14 13:48:52 UTC
README
此模块提供了一种将文件存储在结构化数据库中的方法,并提供文件访问器,以在无需设置公共文件夹和担心安全性和htaccess配置的情况下下载或显示文件。
还提供了视图助手,可以访问文件的下载URL以及文件信息。
此模块正处于积极开发阶段。有关即将推出的功能,请参阅README的底部。
要求
- PHP 5.3
- Zend Framework 2
- Doctrine 2
请参阅https://github.com/artur-gajewski/FileBank
关注我的Twitter:@GajewskiArtur
使用Composer安装
转到您的项目目录,并在composer.json文件中的"require"列表中添加以下行
"artur-gajewski/file-bank": "dev-master"
现在运行Composer
php composer.phar install
然后将'FileBank'添加到APPLICATION_ROOT/config/application.config.php中的Module数组中
<?php return array( 'modules' => array( ... 'FileBank', ... ), );
接下来,通过运行data/create_scema.sql文件中的两个查询,在您的应用程序的MySQL数据库中创建一个新的表
CREATE TABLE filebank ( id int(11) NOT NULL auto_increment, name varchar(250) NOT NULL, size int(11) NOT NULL, mimetype varchar(250) NOT NULL, isactive int(11) NOT NULL, savepath varchar(250) NOT NULL, keywords varchar(500), PRIMARY KEY (id) ); CREATE TABLE filebank_keyword ( id int(11) NOT NULL auto_increment, fileid int(11) NOT NULL, value varchar(250), PRIMARY KEY (id) );
配置Doctrine和FileBank参数
FileBank模块使用Doctrine访问为其指定的数据库表。FileBank将文件信息保存到数据库中,并提供函数以在任何时候利用这些信息。
FileBank模块包在其自身的配置中包含FileBank/config/module.config.php,但您不应触摸在vendor目录下安装的模块中发现的任何配置。
相反,如果您想覆盖FileBank模块提供的任何配置参数,您应该创建一个新的配置文件APPLICATION_ROOT/config/autoload/FileBank.global.php
<?php return array( ... 'doctrine' => array( 'connection' => array( 'orm_default' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => 'localhost', 'port' => '3306', 'user' => 'username', 'password' => 'password', 'dbname' => 'database_name', ) ) ), ...
这将使用您自己的设置覆盖提供的包的默认设置。
您还可以修改与包一起提供的默认参数设置,以便它们适合您的需求。这些参数包括
请随意将sample config Filebank.php.dist
复制到APPLICATION_ROOT/config/autoload/FileBank.global.php
'params' => array( 'filebank_folder' => '/data/filebank/', 'default_is_active' => true, 'chmod' => '0755', ),
- filebank_folder -> 文件保存到的文件库根目录
- default_is_active -> 文件是否默认设置为活动状态
- chmod -> 创建文件夹后,它应该具有什么chmod
从控制器访问FileBank
FileBank模块可通过Service Locator访问
$fileBank = $this->getServiceLocator()->get('FileBank');
当你获取服务并创建对象时,你可以使用它来做一些神奇的事情
$entity = $fileBank->save('/tmp/myfile.jpg');
返回值是文件的FileBank实体,你可以从中获取视图助手中可用的信息。
你还可以通过向save()函数添加一个数组来为文件附加关键词
$keywords = array('Foo', 'Bar', 'Hey'); $entity = $fileBank->save('/tmp/myfile.jpg', $keywords);
这将将这些三个关键词附加到文件上。你可以按以下方式检索具有特定关键词的文件
$fileBank->getFilesByKeywords(array('Foo', 'Hey'));
这将返回一个匹配关键词Foo和Hey的FileBank实体数组。在保存和检索函数中,关键词使用都是不区分大小写的。
从FileBank下载文件
此包附带路由和控制器,可以从视图脚本中启用文件目录下载。您需要做的就是将视图脚本的链接指向
http://YourApplication.com/files/<id>
ID是保存到FileBank中的文件的标识符。
在视图脚本中,您可以使用FileBank的视图助手,它返回文件实体
<a href="<?php echo $this->getFileById(145)->getUrl(); ?>">Download <?php echo $this->getFileById(145)->getName(); ?></a>
或者,您可以将文件直接放置到IMG标签中以显示图像及其标题数据
<img title="<?php echo $this->getFileById(145)->getName(); ?>" src="<?php echo $this->getFileById(145)->getUrl(); ?>"/>
当用户点击此生成的URL时,将出现下载提示,文件可供下载。
即将推出...
将在某个时候添加的功能
- 上传文件的版本控制
- 使用GD进行图像编辑(每个保存的图像有多个不同的大小,可配置参数)
有问题或评论吗?
如有任何关于此模块的疑问或评论,请随时给我发送电子邮件