evolutasrl / dropzone-bundle
Symfony DropzoneBundle
Requires
- php: >=5.3.9
- symfony/form: ~2.3|~3.4
- symfony/framework-bundle: ~2.7|~3.4
- symfony/twig-bundle: ~2.3|~3.4
- symfony/validator: ~2.8|~3.4
Requires (Dev)
- phpspec/phpspec: ~2.1
README
DropzoneBundle 在 Symfony2 表单中增加了对 直接 S3 上传 的支持。它提供了一个表单类型,可以将文件直接发送到您的 Amazon AWS S3 存储桶,而无需接触您的 web 服务器。
关于此技术的更多信息请访问 Aws 网站。
功能包括
- 单个文件上传
- 多个文件上传
此包已通过 phpspec 进行了良好的单元测试。
安装
安装是一个快速(我保证!)的 4 步过程
- 使用 composer 下载 DropzoneBundle
- 启用 Bundle
- 配置 DropzoneBundle
- JavaScript 和 css
###第 1 步:使用 composer 下载 DropzoneBundle
使用 composer 需求该包
$ composer require evoluta/dropzone-bundle "1.0.x-dev"
Composer 将将包安装到您的项目的 vendor/evoluta/dropzone-bundle 目录。
###第 2 步:启用 Bundle
在内核中启用 Bundle:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Evoluta\DropzoneBundle\EvolutaDropzoneBundle(),
// ...
);
}
###第 3 步:配置 DropzoneBundle 下一步是配置该 Bundle 以满足您的应用程序的具体需求。
将以下配置添加到您的 parameters.yml 文件中。
dropzone_endpoint: //s3-eu-west-1.amazonaws.com/
dropzone_accessKey: <aws_accesskey>
dropzone_secret: <aws_secret>
dropzone_bucket: <aws_bucket>
您可以在使用类型时覆盖 parameters.yml 中的配置。
将以下配置添加到您的 config.yml 文件中。
evoluta_dropzone:
endpoint: "%dropzone_endpoint%"
accessKey: "%dropzone_accessKey%"
secret: "%dropzone_secret%"
bucket: "%dropzone_bucket%"
###第 4 步:添加 twig 配置 在您的 config.yml 文件中添加以下行
- 'EvolutaDropzoneBundle:Form:fields.html.twig'
您的配置 twig 区域将如下所示
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
globals:
_guardian_company: "@guardian.company.identity_factory"
form_themes:
- bootstrap_3_layout.html.twig
- 'EvolutaDropzoneBundle:Form:fields.html.twig'
###第 5 步:JavaScript 和 css 待办:描述资产转储并在主模板中声明。
用法 - 单个上传
通过此包,您可以使用一个名为 dropzoneS3File 的新表单字段类型。该字段类型扩展了 symfony 的默认 URL 字段类型。
class DropzoneController extends Controller
{
public function testAction(Request $request)
{
// ...
$form = $this->createFormBuilder()
->add(
'task1',
'dropzoneS3File'
)
->add(
'task2',
'dropzoneS3File',
array(
'acceptedFiles' => 'image/*',
'directory' => 'images/sub1/sub2'
)
)
->getForm();
// ...
}
}
###选项 ####端点 您可以覆盖此字段的全球 aws 端点配置。
$form = $this->createFormBuilder()
->add(
'File upload',
'dropzoneS3File',
array(
'endpoint' => '//s3-eu-west-1.amazonaws.com/',
)
)
####AccessKey 您可以覆盖此字段的全球 accessKey 配置。
$form = $this->createFormBuilder()
->add(
'File upload',
'dropzoneS3File',
array(
'accessKey' => '<your accessKey>',
)
)
####Secret 您可以覆盖此字段的全球 secret 配置。
$form = $this->createFormBuilder()
->add(
'File upload',
'dropzoneS3File',
array(
'secret' => '<your secret>',
)
)
####Bucket 您可以覆盖此字段的全球 secret 配置。
$form = $this->createFormBuilder()
->add(
'File upload',
'dropzoneS3File',
array(
'bucket' => '<your bucket>',
)
)
####Acl Amazon S3 支持一组预定义的权限,称为 canned ACLs。每个 canned ACL 都有一组预定义的受托人和权限。您可以在此处了解更多信息 这里
您可以覆盖此字段的全球所有配置。
您可以使用以下选项之一
- 私有
- 公开读取
- 公开读取和写入
- 认证读取
- 所有者读取
- 所有者完全控制
默认值是 公开读取
$form = $this->createFormBuilder()
->add(
'File upload',
'dropzoneS3File',
array(
'all' => 'public-read',
)
)
####目录 将文件放入的子目录。默认值是 null。
$form = $this->createFormBuilder()
->add(
'File upload',
'dropzoneS3File',
array(
'directory' => 'images/sub1/sub2'
)
)
####AcceptedFiles 默认实现会检查文件的 MIME 类型或扩展名是否与该列表匹配。这是一个 MIME 类型或文件扩展名的逗号分隔列表。例如:image/*,application/pdf,.psd。默认配置允许上传所有类型的文件。
$form = $this->createFormBuilder()
->add(
'File upload',
'dropzoneS3File',
array(
'acceptedFiles' => 'image/*'
)
)
####ExpireAt 指定了 POST 策略的过期日期和时间。指定用户从页面加载到完成上传可以等待多长时间。它期望提供一个包含英语日期格式的字符串。您可以使用以下关键词
- 现在
- +1 小时
- +4 小时
- +1 天
- +5 天
- +1 周
- +1 周 2 天 4 小时 2 秒
- 下个星期四
- 上一个星期一
内部此函数使用 strtotime 读取更多信息 php 网站。
$form = $this->createFormBuilder()
->add(
'File upload',
'dropzoneS3File',
array(
'expireAt' => '+1 hour'
)
)
用法 - 多个上传
正在进行中。请帮助我们!
###待办事项
- 配置 AWS
许可证
此软件包采用 MIT 许可证。完整许可证可在软件包中查看。
Resources/meta/LICENSE
关于
DropzoneBundle 是由 evolutasrl 发起的,由 brainrepo 编码,自豪地采用撒丁岛之爱制作而成 :)
报告问题或功能请求
问题和功能请求在 Github 问题跟踪器 中跟踪。
报告错误时,最好在基于 Symfony 标准版 的基本项目中重现错误,以便软件包的开发者可以通过简单地克隆它并遵循一些步骤来重现问题。