ns/file-upload-bundle

此组件提供简单的文件上传功能

安装数: 7,994

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.0 2024-05-16 15:51 UTC

This package is auto-updated.

Last update: 2024-09-19 06:46:10 UTC


README

这是一个处理文件上传和URL生成的简单组件。

安装

通过 Composer

$ composer require ns/file-upload-bundle

配置

定义配置

配置被定义为服务。对于每个命名/文件位置定义一个标记服务。您可以选择提供的任何文件命名器,或者实现自己的。第二个和第三个参数只需其中一个即可,但两者都可以使用。

# services.yml
ns_file.applicant_uploads:
  class: NS\FileUploadBundle\Handler\Config
  arguments: [ "@ns_file.namer.default", "applicant-uploads", "@ns_file.directory_namer.hash" ]
  tags:
    - { name: ns_file.config, config_name: applicant }

根据上述配置。使用此配置上传的文件将存储在 web/uploads/applicant-uploads/HASH/ClientOriginalName_RANDSTR.ext

您可以自由实现自己的文件和/或目录命名器。只需实现 NS\FileUploadBundle\Namer\FileNamerInterface 或 NS\FileUploadBundle\Namer\DirectoryNamerInterface。

该组件包含以下文件命名策略。

OriginalNamer

此命名器将上传的文件使用客户端上传时提供的名称存储。服务 id @ns_file.namer.client_original

OriginalRandomNamer

类似于 OriginalNamer,此命名器将保持原始文件名,但在名称之后但在文件扩展名之前插入随机字符和数字。这是 默认 文件命名器。服务 id @ns_file.namer.original_random

RandomNamer

此命名器将文件重命名为随机字符串,但保留原始文件扩展名。服务 id @ns_file.namer.random

UniqueHashNamer

此命名器对原始客户端名称执行 sha1 哈希,并使用该哈希加上原始文件扩展名。服务 id @ns_file.namer.unique_hash

使用方法

处理文件上传时。简单请求上传处理服务。传递给该服务一个已上传文件的实例,配置以及可选的任何其他数据,这些数据将用于目录命名器。

上传处理

    // $applicantEmailAddress = 'user@example.com';
    // instanceof UploadedFile with clientOriginalName 'funny-cat-image.jpg'
    $sourceFile = $form['somefile']->getData();
    $handler = $this->get('ns_file.upload_handler');
    
    $destinationFile = $handler->upload('applicant', $sourceFile, $applicantEmailAddress);

根据我们上面的示例配置,将源文件放置在 web/uploads/applicant-uploads/63a710569261a24b3766275b7000ce8d7b32e2f7/funny-cat-image_xx12xa.jpg。然后,它将返回此文件的 File 实例。您可以将文件名保存为所需的任何方式。

下载 / Twig

有一个twig助手,可以生成任何给定文件的下载URL。

    <a href="{{ file_path('applicant', 'funny-cat-image_xx12xa.jpg', 'user@example.com') }}">Download</a>

提供指向此文件的链接。

许可证

MIT,请参阅 LICENSE。