cjci/res_storage

CodeIgniter 资源管理库。使用加密存储文件并处理文件元数据。

安装: 94

依赖: 0

建议: 0

安全: 0

星标: 0

关注者: 2

分支: 1

语言:JavaScript

1.0.0 2013-11-14 13:13 UTC

This package is not auto-updated.

Last update: 2024-09-24 00:51:46 UTC


README

Codeigniter 框架的资源管理类。允许存储和加密(或不加密)处理文件。

什么是 CI 资源管理

这是一个为 CodeIgniter 框架编写的库,它帮助管理资源(文件),并允许您在文件系统中以加密或不加密的方式存储这些文件。默认情况下,它使用 rijndael-256(通常称为 AES256)来存储文件。

如果您要处理的 Web 应用程序中有大量文件,您必须以某种方式保护它们,并且希望有一个共同的库来执行应用程序中存储和加密文件的繁琐工作,那么这个库就是为您准备的。

安装

1.a(如果您使用 composer)执行:composer require cjci/res_storage 并填写您希望使用的版本(dev-master 以获取最新更改)。

1.b(手动)将此项目的所需版本下载到应用程序/libraries/。

  1. 在应用程序/config中创建自己的 res_storage.php 配置文件,以配置您的路径和加密密钥。(请参阅使用说明以获取更多信息)

使用方法

Codeigniter 的包装类到加载器类

这个类可以在代码中的任何地方使用其 FQNS CJCI/ResStorage/ResStorage。但是,如果您想在代码中使用 $this->load->('res_storage'),因为您熟悉 CI Loader,只需在应用程序/libraries文件夹中创建一个 res_storage.php 文件。内容如下

<?php
if (!defined('BASEPATH'))
    exit('No direct script access allowed');

use CJCI\ResStorage\ResStorage;

class res_storage extends ResStorage{}

现在我们需要配置文件存储的位置和一个新的清晰密钥。(它将成为新的散列密钥的基础)

在 CodeIgniter 的配置目录中创建一个 res_storage.php 文件

$config['clearkey'] = "您的密钥" ;

$config['storage_dir'] = "/您的文件系统路径/";

或者作为使用 CI Loader 类的参数

$this->load->library('res_storage',array('clearkey' => 'MyKey','storage_dir' => '/Path'));

实例化 $this->load->library('res_storage');

存储文件 当存储文件时,它将存储该文件的副本。它不会移动或删除原始文件。$uuid = $this->res_storage->store_file('/Path/to/File.txt');

$uuid 是一个唯一字符串标识符,用于在未来识别该文件。

存储文件将使用文件处理器类(默认为加密 AES256 32IV)存储文档的副本。同时还将文档的元数据存储到 res_storage 表中。

读取元数据 var_dump($this->res_storage->metadata($uuid));

返回

array(10) { 
		["id"]=> string(1) "8" 
		["uuid"]=> string(23) "52825331913af4.96762038" 
		["filename"]=> string(22) "logo_entry_transparent.jpg" 
		["path"]=> string(46) "/var/www/webpage/resources/827/c0b/b38/" 
		["mimetype"]=> string(10) "image/jpeg" 
		["hash"]=> string(32) "827c0bb38c277eb592ff122b39b67d9e" 
		["b64_iv"]=> string(44) "maasdaX7JsfsGJvgcMhX2jBRkm2N4SV7523sYgP6Pb7gZN89Xa62mU=" 
		["accessed"]=> string(1) "0" 
		["stored"]=> string(19) "2013-08-01 20:11:29" 
		["lastaccess"]=> string(19) "2013-08-01 20:11:29" 
	}

获取文件内容 $contents = $this->res_storage->file_get_contents($uuid);

使用元数据输出内容到浏览器 使用元数据来写入一些头信息,然后文件内容 $this->res_storage->readfile($uuid);

删除文件 $this->res_storage->delete($uuid)

如果出现问题,所有操作都会抛出异常。因此,如果您想确保安全并避免加载一半的页面,请尝试使用 try-catch。

	 try{
                return $this->res_storage->readfile($uuid);
            }catch (Exception $e) {
                error_log ('/* Captured: ',  $e->getMessage(), "*/ \n");
                http_response_code(404);
                die("File not found.");
            }

创建您自己的具有您自己的加密的 FileHandle

如果您不想使用 MCRYPT 加密存储文件,请扩展 RSFile 类并在代码的某个地方包含它。否则,扩展 RSFileEncrypted 并修改其属性以满足您的需求。

在您的 config/res_storage.php 中添加:$config['file_handler'] = 'My_File_Handler' ;

或者扩展 ResStorage 并覆盖以下内容以使用您的 FileHandler

use CJCI\ResStorage\ResStorage;
class My_Storage extends ResStorage {
	/**
     * Class to use to handle phisically files. Default RSFileEncrypted
	 * use RSFile for non encrypted handling. (or write your own!)Where files will be stored.
     * FileClass
     * @access public
     * @var string
     */
	public $FileClass    = "MY_File_Handler";
}

许可协议

GPL V3