artur-gajewski/file-bank

此包最新版本(dev-master)没有可用的许可证信息。

一个用于将文件及其元数据、关键词和状态信息上传到文件库的Zend Framework 2模块,并提供一个控制器以供下载已保存的文件。

安装: 324

依赖: 2

建议: 0

安全: 0

星标: 22

关注者: 6

分支: 10

公开问题: 0

类型:模块

dev-master 2014-05-07 06:09 UTC

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进行图像编辑(每个保存的图像有多个不同的大小,可配置参数)

有问题或评论吗?

如有任何关于此模块的疑问或评论,请随时给我发送电子邮件

info@arturgajewski.com