viraj/hawkeye

此包已被放弃,不再维护。没有建议的替代包。

一个用于在嵌套的md5散列命名文件夹结构中自动上传文件的包。为Laravel提供优化的文件存储的迷你CDN。

v1.0.7 2016-09-07 11:56 UTC

This package is auto-updated.

Last update: 2022-02-01 12:45:34 UTC


README

一个用于在嵌套的md5散列命名文件夹结构中自动上传文件的Laravel包。为Laravel提供优化的文件存储的迷你CDN。

目标

通常,我们将文件上传到特定的文件夹中。在小应用中,这是完全可以的,但在大型应用中,一个文件夹中有成千上万的文件会影响性能。Hawkeye旨在解决这个问题。Hawkeye检索上传的文件,创建一个唯一的ID,并使用md5对ID进行散列。散列的文件用于创建文件的嵌套文件夹结构。

md5 hash of uploaded file => c4ca4238a0b923820dcc509a6f75849b.jpg

上述散列名称将用于创建目录

c4c/a42/38a/0b9/238/20d/cc5/09a/6f7/584/c4ca4238a0b923820dcc509a6f75849b.jpg

安装

为了安装Hawkeye,只需将以下内容添加到您的composer.json中。

"viraj/hawkeye": "dev-master"

然后运行 composer installcomposer update

然后在您的 config/app.php 中添加

'Viraj\Hawkeye\HawkeyeServiceProvider',

到提供者数组中,并

'Hawkeye' 	=> 'Viraj\Hawkeye\HawkeyeFacade',

到别名数组中。

创建迁移

现在生成Hawkeye迁移

php artisan hawkeye:migration

它将生成 <timestamp>_hawkeye_setup_tables.php 迁移。您现在可以使用 artisan migrate 命令运行它

php artisan migrate 迁移后,将出现一个新表

hawkeye — 存储文件记录及其元数据

配置

您需要发布此包的配置,以进一步自定义文件的存储路径。只需使用 php artisan vendor:publish,然后在您的 app/config 目录中创建一个 hawkeye.php 文件。

配置文件

一个典型的 Hawkeye 配置文件应该如下所示

<?php

return [
    'hawkeye_base_path' => 'images/',
    'images' => [
        'banner' => '1200x800',
        'thumbnail' => '300x200',
        'large' => '600x500',
    ],
];

基本目录配置

config/hawkeye.php 中设置基本目录,您的文件将存储在此处。

'hawkeye_base_path' => 'path/to/directory',

例如,如果您想将文件存储在 public/images 目录中,则

'hawkeye_base_path' => 'images/',

注意:不要忘记在 images 后面添加正斜杠

或者,如果您想在外部存储目录中存储它们,例如在 storage/images 中,则给出目录路径

'hawkeye_base_path' => '../storage/images/',

Hawkeye 将将文件存储在适当的目录中。

图像缩放配置

您可以配置Hawkeye以按您所需的各种尺寸缩放上传的图像。它包含一些默认图像尺寸,用于根据行业标准缩放图像,但您可以自由配置以满足您的需求。如果您需要一些不同的值,请相应地编辑 config/hawkeye.php 中的值

'images' => [
    'banner' => '1200x800',
    'thumbnail' => '300x200',
    'large' => '600x500',
],

如果您想保留上述配置并添加一些针对您应用的定制配置,您也可以这样做。只需添加您配置所需的维度和名称。

'images' => [
    'banner' => '1200x800',
    'thumbnail' => '300x200',
    'large' => '600x500',
    'your-configuration' => '800x600',
],

使用Hawkeye上传文件

upload.blade.php

<form open="hawkeye" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">

    /* You can have multiple file upload or single file. Hawkeye will handle it out of the box for you. */
    <input type="file" name="file_upload[]" multiple> OR <input type="file" name="file_upload">
    <input type="submit" value="Upload">
</form>

FileController.php

上传和调整文件大小

在您的控制器中,您可以编写以下代码

<?php

use Viraj\Hawkeye\HawkeyeFacade as Hawkeye;

public function uploadFile()
{
    $files = Hawkeye::upload('file_upload')->resize()->get();
    var_dump($files);
}

上述代码将上传、调整大小(配置中指定的所有图像类型)并为您提供嵌套的文件名数组(MD5散列名称)

array (size=2)
  'list' => 
    array (size=8)
      0 => string 'd67d8ab4f4c10bf22aa353e27879133c.png' (length=36)
      1 => string 'd645920e395fedad7bbbed0eca3fe2e0.png' (length=36)
      2 => string 'd67d8ab4f4c10bf22aa353e27879133c_1200_800.png' (length=45)
      3 => string 'd67d8ab4f4c10bf22aa353e27879133c_300_200.png' (length=44)
      4 => string 'd67d8ab4f4c10bf22aa353e27879133c_600_500.png' (length=44)
      5 => string 'd645920e395fedad7bbbed0eca3fe2e0_1200_800.png' (length=45)
      6 => string 'd645920e395fedad7bbbed0eca3fe2e0_300_200.png' (length=44)
      7 => string 'd645920e395fedad7bbbed0eca3fe2e0_600_500.png' (length=44)
  'separated' => 
    array (size=2)
      0 => 
        array (size=4)
          'original' => string 'd67d8ab4f4c10bf22aa353e27879133c.png' (length=36)
          'banner' => string 'd67d8ab4f4c10bf22aa353e27879133c_1200_800.png' (length=45)
          'thumbnail' => string 'd67d8ab4f4c10bf22aa353e27879133c_300_200.png' (length=44)
          'large' => string 'd67d8ab4f4c10bf22aa353e27879133c_600_500.png' (length=44)
      1 => 
        array (size=4)
          'original' => string 'd645920e395fedad7bbbed0eca3fe2e0.png' (length=36)
          'banner' => string 'd645920e395fedad7bbbed0eca3fe2e0_1200_800.png' (length=45)
          'thumbnail' => string 'd645920e395fedad7bbbed0eca3fe2e0_300_200.png' (length=44)
          'large' => string 'd645920e395fedad7bbbed0eca3fe2e0_600_500.png' (length=44)

上述响应包含2个参数

list - 它包含已上传和调整大小的所有文件列表。

separated - 它包含已上传文件和调整大小的图像的分离列表,如果有的话!

getList()

如果您只想获取所有已上传和调整大小的文件列表,而不包含图像类型的数据,您可以像以下这样使用getList()方法

<?php

use Viraj\Hawkeye\HawkeyeFacade as Hawkeye;

public function uploadFile()
{
    $files = Hawkeye::upload('file_upload')->resize()->getList();
    var_dump($files);
}

以下是

array (size=8)
      0 => string 'd67d8ab4f4c10bf22aa353e27879133c.png' (length=36)
      1 => string 'd645920e395fedad7bbbed0eca3fe2e0.png' (length=36)
      2 => string 'd67d8ab4f4c10bf22aa353e27879133c_1200_800.png' (length=45)
      3 => string 'd67d8ab4f4c10bf22aa353e27879133c_300_200.png' (length=44)
      4 => string 'd67d8ab4f4c10bf22aa353e27879133c_600_500.png' (length=44)
      5 => string 'd645920e395fedad7bbbed0eca3fe2e0_1200_800.png' (length=45)
      6 => string 'd645920e395fedad7bbbed0eca3fe2e0_300_200.png' (length=44)
      7 => string 'd645920e395fedad7bbbed0eca3fe2e0_600_500.png' (length=44)

针对特定图像类型的调整大小

有时,您可能不想将图像调整为配置中指定的所有类型。不用担心,Hawkeye也为此提供了相应的功能。在resize()方法中指定您想要上传的图像调整大小的图像类型名称,Hawkeye将只将这些类型进行调整。

<?php

use Viraj\Hawkeye\HawkeyeFacade as Hawkeye;

public function uploadFile()
{
    $files = Hawkeye::upload('file_upload')->resize(['banner', 'large'])->get();
    var_dump($files);
}

上述代码将只将您的图像调整大小为2种类型 - bannerlarge。响应将是

array (size=2)
  'list' => 
    array (size=6)
      0 => string 'a5bfc9e07964f8dddeb95fc584cd965d.png' (length=36)
      1 => string 'a5771bce93e200c36f7cd9dfd0e5deaa.png' (length=36)
      2 => string 'a5bfc9e07964f8dddeb95fc584cd965d_1200_800.png' (length=45)
      3 => string 'a5bfc9e07964f8dddeb95fc584cd965d_600_500.png' (length=44)
      4 => string 'a5771bce93e200c36f7cd9dfd0e5deaa_1200_800.png' (length=45)
      5 => string 'a5771bce93e200c36f7cd9dfd0e5deaa_600_500.png' (length=44)
  'separated' => 
    array (size=2)
      0 => 
        array (size=3)
          'original' => string 'a5bfc9e07964f8dddeb95fc584cd965d.png' (length=36)
          'banner' => string 'a5bfc9e07964f8dddeb95fc584cd965d_1200_800.png' (length=45)
          'large' => string 'a5bfc9e07964f8dddeb95fc584cd965d_600_500.png' (length=44)
      1 => 
        array (size=3)
          'original' => string 'a5771bce93e200c36f7cd9dfd0e5deaa.png' (length=36)
          'banner' => string 'a5771bce93e200c36f7cd9dfd0e5deaa_1200_800.png' (length=45)
          'large' => string 'a5771bce93e200c36f7cd9dfd0e5deaa_600_500.png' (length=44)

generateFullImagePathFor()

此函数返回特定文件名(带扩展名的散列)的完整图像路径。

示例1(调整大小的图像 - 名称中附加了尺寸)

    Hawkeye::generateFullImagePathFor('45c48cce2e2d7fbdea1afc51c7c6ad26_1200_200.jpg')
    
    Output:
    "images/45c/48c/ce2/e2d/7fb/dea/1af/c51/c7c/6ad/45c48cce2e2d7fbdea1afc51c7c6ad26_1200_200.jpg"

示例2(原始图像 - 具有原始名称)

    Hawkeye::generateFullImagePathFor('45c48cce2e2d7fbdea1afc51c7c6ad26.jpg')
    
    Output:
    "images/45c/48c/ce2/e2d/7fb/dea/1af/c51/c7c/6ad/45c48cce2e2d7fbdea1afc51c7c6ad26.jpg"

许可证

Hawkeye是免费软件,在MIT许可证的条款下分发