阿里云oss获取在线预览地址---PHP
1.要使用文档预览功能,您需要先开通智能媒体管理IMM,并在OSS中绑定IMM,,详情请参见快速开始。2.开通智能媒体管理IMM,参考地址:https://help.aliyun.com/document_detail/99384.html?spm=a2c4g.11186623.2.5.3e185d985OeU1k#concept-ifz-zcr-bgb注意:1.创建IMM Project及使用I
1.要使用文档预览功能,您需要先开通智能媒体管理IMM,并在OSS中绑定IMM,,详情请参见快速开始。
2.开通智能媒体管理IMM,参考地址:https://help.aliyun.com/document_detail/99384.html?spm=a2c4g.11186623.2.5.3e185d985OeU1k#concept-ifz-zcr-bgb
注意:
1.创建IMM Project及使用IMM功能会产生一定的费用。详细费用,请参见计费说明。
2.目前仅华北 2(北京)、华东 1(杭州)、华东 2(上海)、华南 1(深圳)、华北 3(张家口)、新加坡地域支持IMM。【若当前购买的oss不支持在线预览,可重新创建bucket,重新选择区域。
3.开通只能媒体管理后,要使用IMM对某个存储空间中的文件进行处理,需要为该存储空间绑定IMM。
4.通过oss管理控制台使用IMM
5.STS临时授权访问OSS,详情见:https://help.aliyun.com/document_detail/100624.html?spm=a2c4g.11186623.2.5.23966d13AOE8YD
配置模式若选择可视化配置,选择ecs。
以上配置需要记录,
AccessKey ID和AccessKey Secret,ARN查看:RAM访问控制=》RAM角色管理=》搜索你刚才新建的名称=》点击详情=》可看到ARN。
6.通过php后台服务器生成在线预览地址,通过STS临时授权,生成下载的签名URL。
若项目框架需配置:composer require aliyuncs/oss-sdk-php composer require alibabacloud/client 生成扩展包
1.STS帐号,获取阿里云临时安全令牌。
2.下载 composer require alibabacloud/client ,扩展包
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
//构建一个阿里云客户端,用于发起请求。
//构建阿里云客户端时需要设置AccessKey ID和AccessKey Secret。【上一步骤保存的】
AlibabaCloud::accessKeyClient('<accessKeyId>', '<accessSecret>')
->regionId('cn-beijing')
->asDefaultClient();
//设置参数,发起请求。
try {
$result = AlibabaCloud::rpc()
->product('Sts')
// ->scheme('https') // https | http
->version('2015-04-01')//固定值
->action('AssumeRole')//固定值
->method('POST')
->host('sts.aliyuncs.com')
->options([
'query' => [
'RegionId' => "cn-beijing",
'RoleArn' => "<RoleArn>",//上一步骤保存的
'RoleSessionName' => "<RoleSessionName>",//自定义值
],
])
->request();
print_r($result->toArray());
} catch (ClientException $e) {
echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
echo $e->getErrorMessage() . PHP_EOL;
}
打印出的值,
详细
SecurityToken,
AccessKeyId
AccessKeySecret 接下面步骤的值。
6.生成下载的URL
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\OssClient;
use OSS\Core\OssException;
use OSS\Http\RequestCore;
use OSS\Http\ResponseCore;
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
$accessKeyId = "<yourAccessKeyId>";//注意此值非固定数据,上一步骤值
$accessKeySecret = "<yourAccessKeySecret>";//注意此值非固定数据,上一步骤值
// Endpoint以杭州为例,其它Region请按实际情况填写。
$endpoint = "http://oss-cn-beijing.aliyuncs.com";
$bucket= "<yourBucketName>";
$object = "demo.doc";
$securityToken = "<yourSecurityToken>";//SecurityToken上一步骤值
// 设置URL的有效时长为3600s。
$timeout = 3600;
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);
// 生成GetObject的签名URL。
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n");
// 您可以使用代码来访问签名URL,也可以输入到浏览器中进行访问。
$request = new RequestCore($signedUrl);
// 生成的签名URL默认以GET方式访问。
$request->set_method('GET');
$request->add_header('Content-Type', '');
$request->send_request();
$res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code());
if ($res->isOK()) {
print(__FUNCTION__ . ": OK" . "\n");
} else {
print(__FUNCTION__ . ": FAILED" . "\n");
};
获取文档的预览地址和AccessToken后,无需指定iframe元素,JS文件会自动在自定块元素下生成iframe,并通过JS文件设置 AccessToken即可快捷的实现文档预览。详情可见:https://help.aliyun.com/document_detail/162639.html?spm=5176.smartservice_service_chat.0.dexternal.76b6709akEz6Wh
更多推荐
所有评论(0)