prolixlib/file-system-bundle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

prolixlib/file-system-bundle

Composer 安装命令:

composer require prolixlib/file-system-bundle

包简介

Symfony Kitpages FileSystem Bundle. Abstraction layer for files (local, S3)

README 文档

README

This is a Symfony2 bundle that provides a filesystem abstraction layer. Basicaly this does the same as the gaufrette library from KnpLabs, but it manages much more efficiently big files. We can manage a 2GB file with a memory limit of 128Mo for the PHP process. We never transfert the entire content in a $content variable.

With this bundle you can save your files on different filesystems (S3, Local filesystem, FTP,...)

Some elements of the configuration system are based on the code of the KnpGaufretteBundle.

Versions

2019-01-23 : v4.0.0

  • [new] upgrade to Symfony 2.8, 3.x, 4.x
  • [doc] best doc for tests

2018-05-16 : v3.2.1

  • [fix] url of the file in the flysystem system for swift
  • [fix] fix pb when the file doesn't exist in flysystem adapter
  • [fix] fix mime type problem in flysystem adapter

2018-05-15 : v3.2.0

  • [new] integration with flysystem

Lot of doc is missing here...

2012-05-24 : v1.0.0

  • first stable release

Actual state

This bundle is stable. The adapters are :

  • Local adapter : file system of the server
  • S3 adapter : for Amazon Web Service AWS S3
  • FTP adapter : for FTP access
  • FlySystem adapater : for a link to flysystem

Installation

You need to add the following lines in your deps :

Using Composer, just $ composer require kitpages/file-system-bundle package or:

{
  "require": {
    "kitpages/file-system-bundle": "dev-master"
  }
}

Only if you use AmazonS3

{
  "require": {
    amazonwebservices/aws-sdk-for-php: ~1.5
  }
}

Only if you use Flysystem

{
  "require": {
    "league/flysystem": "^1.0",
    "oneup/flysystem-bundle": "^1.14",
  }
}

AppKernel.php

$bundles = array(
    ...
    new Kitpages\FileSystemBundle\KitpagesFileSystemBundle(),
);

// AWS SDK needs a special autoloader

require_once __DIR__.'/../vendor/aws-sdk/sdk.class.php';

Configuration example

The following configuration defines 3 filesystems :

  • kitpagesFile : a local filesystem
  • kitpagesAmazon : a filesystem on Amazon S3
  • kitpagesFlysystem : another filesystem abstraction

Let's see the configuration in config.yml

kitpages_file_system:
    file_system_list:
        kitpagesFile:
            local:
                directory_public: %kernel.root_dir%/../web
                directory_private: %kernel.root_dir%
                base_url: %base_url%
        kitpagesAmazon:
            amazon_s3:
                bucket_name: %kitpagesFile_amazons3_bucketname%
                key: %kitpagesFile_amazons3_key%
                secret_key: %kitpagesFile_amazons3_secretkey%
        kitpagesFlysystem:
            flysystem:
                flysystem_adapter: oneup_flysystem.your_filesystem
                file_uri_prefix: https://your.custom.url/4687311687643/FRA/

Usage example

// use AdapterFile at the beginning of the file
use Kitpages\FileSystemBundle\Model\AdapterFile;

// get the adapter
$localAdapter = $this->get("kitpages_file_system.file_system.kitpagesFile");
$s3Adapter = $this->get("kitpages_file_system.file_system.kitpagesAmazon");

// private files (without direct public URL)
$adapter->copyTempToAdapter("/my_physical_dir/foo.txt", new AdapterFile("bar/foo.txt") );
$adapter->copyAdapterToTemp(new AdapterFile("bar/foo.txt"), "/my_physical_dir/foo.txt" );

// public files (with a direct URL given by the adapter)
$adapter->copyTempToAdapter("/my_physical_dir/foo.txt", new AdapterFile("bar/foo.txt", true) );
$url = $adapter->getFileLocation(new AdapterFile("bar/foo.txt", true));

// some functions of the adapter :
$adapterFile = new AdapterFile("bar/foo.txt");
$adapter->copyTempToAdapter("/my_physical_dir/foo.txt", $adapterFile );
$content = $adapter->getFileContent($adapterFile);
$adapter->sendFileToBrowser($adapterFile);
if ($adapter->isFile($adapterFile) ) {
    // if file exists in the adapter
}

Run the tests

cd Tests/app/web
php -S localhost:8888

统计信息

  • 总下载量: 849
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-07-14

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固