# 媒体
默认情况下,介质管理器使用安装目录的storage / app / media子目录。要使用Amazon S3或Rackspace CDN,您应该更新系统配置。
> 您需要先安装[Drivers插件,](https://www.kancloud.cn/followme/octobercms/1073836#3)然后才能使用Amazon S3或Rackspace CDN功能。
请注意,更改介质管理器配置后,应重置其缓存。您可以按“媒体管理器”工具栏中的“\*\*刷新”\*\*按钮来执行此操作。
## **配置Amazon S3访问**
要将Amazon S3与OctoberCMS一起使用,您应该在存储桶和API用户中创建S3存储桶,文件夹。
注册Amazon AWS账户或使用现有帐户登录AWS Console。打开S3管理面板。创建一个新存储桶并为其分配任何名称(存储桶的名称将是您的公共文件URL的一部分)。
在存储桶中创建**媒体**文件夹。文件夹名称无关紧要。此文件夹将是媒体库的根目录。
默认情况下,无法直接访问S3存储桶中的文件。要使存储桶处于公共状态,请返回存储桶列表并单击存储桶。单击右侧边栏中的**属性**按钮。展开**权限**选项卡。单击**编辑存储桶策略**链接。将以下代码粘贴到策略弹出窗口。将桶名称替换为您的实际存储桶名称:
```
{
"Version": "2008-10-17",
"Id": "Policy1397632521960",
"Statement": [
{
"Sid": "Stmt1397633323327",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::BUCKETNAME/*"
}
]
}
```
单击**保存**按钮以应用策略。该策略提供对存储桶中所有文件夹和目录的公共只读访问权限。如果您打算将存储桶用于其他需求,则可以设置对存储桶中特定文件夹的公共访问权限,只需在**资源**值中指定目录名称:
```
"arn:aws:s3:::BUCKETNAME/media/*"
```
您还应该创建一个API用户,OctoberCMS将使用该用户来管理存储桶文件。在AWS控制台中,转到IAM部分。转到“用户”选项卡并创建新用户。用户名无关紧要。确保在创建新用户时选中“为每个用户生成访问密钥”复选框。AWS创建用户后,它允许您查看安全凭证 - 用户**访问密钥ID**和**秘密访问密钥**。复制密钥并将其放入临时文本文件中。
返回用户列表,然后单击刚刚创建的用户。在**权限**部分中,单击**附加策略**按钮。在列表中选择**AmazonS3FullAccess**策略,然后单击**Attach Policy**按钮。
现在您拥有更新OctoberCMS配置的所有信息。打开**config / filesystem.php**脚本并找到**磁盘**部分。它已包含s3配置,您需要替换API凭据和存储桶信息参数:
| 参数 | 值 |
|-- |-- |
| **key** | 您之前创建的用户的**访问密钥ID**值。 |
| **secret** | 您创建的用户的**秘密访问密钥**值。 |
| **bucket** | 你的桶名。 |
| **region** | 桶区域代码,见下文。 |
您可以在存储区属性中的S3管理控制台中找到存储区域。“属性”选项卡显示区域名称,例如Oregon。S3驱动程序配置需要存储桶代码。使用此表查找存储桶的代码(您还可以查看[AWS文档](http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)):
| 区域 | 码 |
|--- |---- |
| **美国标准** | us-east-1 |
| **美国西部(俄勒冈州)** | us-west-2 |
| **美国西部(加利福尼亚州北部)** | us-west-1 |
| **欧盟(爱尔兰)** | eu-west-1 |
| **EU(法兰克福)** | eu-central-1 |
| **亚太地区(新加坡)** | ap-southeast-1 |
| **亚太地区(悉尼)** | ap-southeast-2 |
| **亚太(东京)** | ap-northeast-1 |
| **南美洲(圣保罗)** | sa-east-1 |
更新后的配置示例:
```
'disks' => [
...
's3' => [
'driver' => 's3',
'key' => 'XXXXXXXXXXXXXXXXXXXX',
'secret' => 'xxxXxXX+XxxxxXXxXxxxxxxXxxXXXXXXXxxxX9Xx',
'region' => 'us-west-2',
'bucket' => 'my-bucket'
],
...
]
```
保存**config / filesystem.php**脚本并打开**config / cms.php**脚本。找到部分**存储**。在**media**参数更新**磁盘**,**文件夹**和**路径**参数中:
参数值**disk**使用**s3**值。**folder**您在S3存储桶中创建的文件夹的名称。**path**存储桶中文件夹的公共路径,请参见下文。要获取文件夹的路径,请打开AWS控制台并转到S3部分。导航到存储桶,然后单击您之前创建的文件夹。将任何文件上传到该文件夹,然后单击该文件。单击右侧边栏中的“**属性”**按钮。文件URL位于**Link**参数中。复制URL并从中删除文件名和尾部斜杠。
示例存储配置:
```
'storage' => [
...
'media' => [
'disk' => 's3',
'folder' => 'media',
'path' => 'https://s3-us-west-2.amazonaws.com/your-bucket-name/media'
]
]
```
恭喜!现在,您已准备好将Amazon S3与OctoberCMS配合使用。请注意,您还可以配置Amazon CloudFront CDN以使用您的存储桶。本主题未在本文档中介绍,请参阅[CloudFront文档](https://www.kancloud.cn/followme/octobercms/1073836#3)。配置CloudFront后,您需要更新存储配置中的**path**参数。
## **配置Rackspace CDN访问**
要将Rackspace CDN与OctoberCMS一起使用,您应该在容器和API用户中创建Rackspace CDN容器,文件夹。
登录Rackspace管理控制台并导航到Storage / Files页面。创建一个新容器。容器名称无关紧要,它将成为公共文件URL的一部分。为新容器选择\*\*公共(启用CDN)\*\*类型。
在容器中创建**媒体**文件夹。文件夹名称无关紧要。此文件夹将是媒体库的根目录。
您应该创建一个API用户,OctoberCMS将使用该用户来管理CDN容器中的文件。在Rackspace控制台中打开帐户/用户管理页面。单击**创建用户**按钮。填写用户名(例如october.cdn.api),密码,安全问题和答案。在**Product Access**部分中,选择**Custom,**然后在CDN行中选择**Admin**。在“\*\*帐户”\*\*部分中使用“**无访问权”**角色,并在“**联系信息”**部分中使用**技术联系**人类保存用户帐户。保存帐户后,您将看到带有**API密钥**的“登录详细信息”部分包含您需要在OctoberCMS配置文件中使用的值的行。
现在您拥有更新OctoberCMS配置的所有信息。打开**config / filesystem.php**脚本并找到**磁盘**部分。它已包含Rackspace配置,您需要替换API凭据和容器信息参数:
参数值**username**Rackspace用户名(例如october.cdn.api)。**key**您可以从Rackspace用户个人资料页面复制的用户**API密钥**。**container**容器名称。**region**桶区域代码,见下文。**endpoint**保持原样。**region**您可以在Rackspace控制面板的CDN容器列表中找到该区域。代码是一个3个字母的值,例如它是芝加哥的**ORD**。更新后的配置示例:
```
'disks' => [
...
'rackspace' => [
'driver' => 'rackspace',
'username' => 'october.api.cdn',
'key' => 'xx00000000xxxxxx0x0x0x000xx0x0x0',
'container' => 'my-bucket',
'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/',
'region' => 'ORD'
],
...
]
```
保存**config / filesystem.php**脚本并打开**config / cms.php**脚本。找到部分**存储**。在**media**参数更新**磁盘**,**文件夹**和**路径**参数中:
参数值**disk**使用**rackspace**值。**folder**您在CDN容器中创建的文件夹的名称。**path**容器中文件夹的公共路径,请参见下文。要获取文件夹的路径,请转至Rackspace控制台中的CDN容器列表。单击容器并打开媒体文件夹。上传任何文件。上传文件后,单击它。该文件将在新的浏览器选项卡中打开。复制文件URL并从中删除文件名和尾随斜杠。
示例存储配置:
```
'storage' => [
...
'media' => [
'disk' => 'rackspace',
'folder' => 'media',
'path' => 'https://xxxxxxxxx-xxxxxxxxx.r00.cf0.rackcdn.com/media'
]
]
```
恭喜!现在您已准备好将Rackspace CDN与OctoberCMS一起使用。
## **音频和视频播放器**
默认情况下,系统使用HTML5音频和视频标签来呈现音频和视频文件:
```
<video src="video.mp4" controls></video>
```
要么
```
<audio src="audio.mp3" controls></audio>
```
可以覆盖此行为。如果有**oc-audio-player.html**和**oc-video-player.html**CMS部分,它们将用于显示音频和视频内容。在partials内部使用变量**src**输出到源文件的链接。例:
```
<video src="{{ src }}" width="320" height="200" controls preload></video>
```
如果您不想使用HTML5播放器,则可以在部分中提供任何其他标记。有一个[第三方脚本](https://html5media.info/)可以支持旧版浏览器中的HTML5视频和音频标签。
由于部分是使用Twig编写的,因此您可以根据命名约定自动添加备用视频源。例如,如果有一个约定,每个全分辨率视频的分辨率视频总是较小,而较小分辨率的文件扩展名为“iphone.mp4”,则生成的标记可能如下所示:
```
<video controls>
<source
src="{{ src }}"
media="only screen and (min-device-width: 568px)"></source>
<source
src="{{ src|replace({'.mp4': '.iphone.mp4'}) }}"
media="only screen and (max-device-width: 568px)"></source>
</video>
```
## **其他配置选项**
有几个选项可以让您微调媒体管理器。所有这些都可以在**config / cms.php**脚本中的**存储/媒体**部分中定义,例如:
```
'storage' => [
...
'media' => [
...
'ignore' => ['.svn', '.git', '.DS_Store']
]
],
```
参数值**ignore**要忽略的文件和目录名称列表。默认为\['.svn','。git','。DS\_Store'\]。**ttl**指定缓存生存时间,以分钟为单位。默认值为10.添加,更新或删除库项目时,缓存会自动失效。**imageExtensions**与Image文档类型对应的文件扩展名。默认值为\*\*\['gif','png','jpg','jpeg','bmp'\]\*\*。**videoExtensions**与视频文档类型对应的文件扩展名。默认值为\*\*\['mp4','avi','mov','mpg'\]\*\*。**audioExtensions**与音频文档类型对应的文件扩展名。默认值为\*\*\['mp3','wav','wma','m4a'\]\*\*。## **事件**
媒体管理器提供了一些您可以监听的[事件](https://www.kancloud.cn/followme/octobercms/1073836#3),以提高可扩展性。
事件描述参数**folder.delete**删除文件夹时调用`(string) $path`**file.delete**删除文件时调用`(string) $path`**folder.rename**重命名文件夹时调用`(string) $originalPath`,`(string) $newPath`**file.rename**重命名文件时调用`(string) $originalPath`,`(string) $newPath`**folder.create**创建文件夹时调用`(string) $newFolderPath`**folder.move**移动文件夹时调用`(string) $path`,`(string) $dest`**file.move**移动文件时调用`(string) $path`,`(string) $dest`**file.upload**上传文件时调用`(string) $filePath`,`(\Symfony\Component\HttpFoundation\File\UploadedFile) $uploadedFile`**要挂钩这些事件,可以`Backend\Widgets\MediaManager`直接扩展类:**
```
Backend\Widgets\MediaManager::extend(function($widget) {
$widget->bindEvent('file.rename', function ($originalPath, $newPath) {
// Update custom references to path here
});
});
```
**或者通过`Event`Facade全局监听(每个事件都以前缀为例,`media.`并将实例化`Backend\Widgets\MediaManager`对象作为第一个参数传递):**
```
Event::listen('media.file.rename', function($widget, $originalPath, $newPath) {
// Update custom references to path here
});
```
## **故障排除**
使用远程服务的最常见问题是SSL连接问题。如果您收到SSL错误,请确保您的服务器具有公共证书颁发机构(CA)的新SSL证书。
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图