1. 安装php:
sudo apt-get install php php-curl php-mbstring -y
2. 安装阿里云php oss sdk:
composer require aliyuncs/oss-sdk-php
3. 建立一个测试程序:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;$accessKeyId = "你的阿里云oss key id";
$accessKeySecret = "你的key密码";
$endpoint = "oss-cn-beijing.aliyuncs.com";try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
print $e->getMessage();
}$bucket= "pythinker";
$object = "filename.txt";
$content = "Hello, OSS!"; // Content of the uploaded filetry {
$ossClient->putObject($bucket, $object, $content);
} catch (OssException $e) {
print $e->getMessage();
}
?>
4. 运行
php test.php
这样在阿里云oss对象存储服务器新建 filename.txt 文件成功了。
离线
现在我有一个问题,如果用MSVC/Qt做一个windows本地 oss 应用程序, 如何才能保护好 秘钥?
离线
现在我有一个问题,如果用MSVC/Qt做一个windows本地 oss 应用程序, 如何才能保护好 秘钥?
这个问题也是我曾经纠结过的问题,不过阿里云已经考虑到了:
离线
刚刚试了一下csdn的下载,果然是用阿里云oss:
以下是原始链接:
https://dl-download.csdn.net/down11/20180910/281b1770422234908d9bbced58ae3608.pdf?response-content-disposition=attachment%3Bfilename%3D%22Debian8_X1000E.pdf%22&security-token=CAISgwJ1q6Ft5B2yfSjIr5fjE%2BLihb4VjvGOQ03rs3gYVulvjZGZ1Dz2IHxFf3FoCOEYv%2Fk1nWlU6%2FoTlqF%2FTIBDQUvNYZOmfHCyF0XzDbDasumZsJYw6vT8a1fxZjf%2F2MjNGaCbKPrWZvaqbX3diyZ32sGUXD6%2BXlujQ%2BDr6Zl8dYY4UxX6D1tBH8wEAgp5tI1gQhm3D%2Fu2NQPwiWf9FVdhvhEG6Vly8qOi2MaRmHG85R%2FYsrZJ%2FtuvecD%2FMJI3Z8kvC4uPsbYoJvab4kl58ANX8ap6tqtA9Arcs8uVa1sruEnXaLKMo4wxfVIjP%2FFmRvIVtprnieY9tuiWkJ%2Fs25qImF%2BBkY61GoABjZSSnBaFysh2HJIV%2F94El6HH5hgHUomaqTLQmfUA9BrDbOrIC3yS7lZkjVEtgKZLXqgQKfw4hNZUE2lFiJESdYABl%2FPDzk%2F3tM75Nm6ISGkS3bAI2%2FnvMw5hfzsX7P073e%2FgY8TJbWBHk8l3skfggznCV2y5KDzk65NAulmnTEY%3D&OSSAccessKeyId=STS.NTVXXVha493eAkZWxMZfCbT26&Expires=1584330236&Signature=AxqHkB0Rs0DQQwRCBqERBf3elYc%3D
根据这些关键字网上搜索, 果然是阿里云的,
然后我再把这个链接粘贴到其他浏览器,
就跳到: https://public-download.csdn.net/500.html
<Error>
<Code>AccessDenied</Code>
<Message>You are denied by bucket referer policy.</Message>
<RequestId>5E6EF581AED6983436A3D8E1</RequestId>
<HostId>csdn-dl-public.oss-cn-beijing.aliyuncs.com</HostId>
<BucketName>csdn-dl-public</BucketName>
</Error>
阿里云oss没跑了。
最近编辑记录 超级萌新 (2020-03-16 11:49:26)
离线
@超级萌新 试了一下 csdn 下载, 还真是阿里云oss噢, 以前一直以为是csdn服务器自己存文件, 不明白为什么我把这个地址粘贴到别的浏览器就不能下载, 出现上面的 You are denied by bucket referer policy. 错误, 难道阿里云又跳转到 csdn 服务器校验是否登录?
离线
@超级萌新 试了一下 csdn 下载, 还真是阿里云oss噢, 以前一直以为是csdn服务器自己存文件, 不明白为什么我把这个地址粘贴到别的浏览器就不能下载, 出现上面的 You are denied by bucket referer policy. 错误, 难道阿里云又跳转到 csdn 服务器校验是否登录?
referer是最简单的防盗链,很容易伪造的。
看你安全的要求,referer是由浏览器,根据当前页面发送的,很容易摸拟。直接在浏览器中输入的地址referer是null.
如果在whycan中的某个页面引用,浏览器发送的 referer=whycan.com/
r安全要求高的话每一个下载链接都要通过时间戳生成密钥。
最近编辑记录 staunchheart (2020-03-16 13:47:20)
离线
referer是最简单的防盗链,很容易伪造的。
看你安全的要求,referer是由浏览器,根据当前页面发送的,很容易摸拟。直接在浏览器中输入的地址referer是null.
如果在whycan中的某个页面引用,浏览器发送的 referer=whycan.com/
r安全要求高的话每一个下载链接都要通过时间戳生成密钥。
刚刚模拟了一下 http://download.csdn.net/ 的 referer,
还是用上面的下载链接,
出现了下面的错误: https://public-download.csdn.net/500.html
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<RequestId>5E6F18CF6B3F22383545651F</RequestId>
<HostId>csdn-dl-public.oss-cn-beijing.aliyuncs.com</HostId>
<Key>500.html</Key>
</Error>
从这个错误The specified key does not exist.看来,
referer 只是第一道防线,后面还要验证 key,
我推测 csdn 为每个用户在 aliyun oss 申请了一个独立的 key。
现在我还没找到上面这步如何操作实现的,
如果这个能实现, 我觉得 aliyun oss 还是挺实用的。
离线
刚刚模拟了一下 http://download.csdn.net/ 的 referer,
还是用上面的下载链接,
出现了下面的错误: https://public-download.csdn.net/500.html
<Error> <Code>NoSuchKey</Code> <Message>The specified key does not exist.</Message> <RequestId>5E6F18CF6B3F22383545651F</RequestId> <HostId>csdn-dl-public.oss-cn-beijing.aliyuncs.com</HostId> <Key>500.html</Key> </Error>
从这个错误The specified key does not exist.看来,
referer 只是第一道防线,后面还要验证 key,
我推测 csdn 为每个用户在 aliyun oss 申请了一个独立的 key。
现在我还没找到上面这步如何操作实现的,
如果这个能实现, 我觉得 aliyun oss 还是挺实用的。
如果是上面哪个地址,是带了签名和时间戳的。这带来一个问题,在百度搜索上也显示不了。所以做这个时要区分,需要SEO的与下载的分开。
离线
如果是上面哪个地址,是带了签名和时间戳的。这带来一个问题,在百度搜索上也显示不了。所以做这个时要区分,需要SEO的与下载的分开。
感谢回复, 我现在不需要 SEO, 也不需要百度搜索到,只需要像csdn这样鉴权,
员工登录到公司网站才给这个地址 aliyun oss 地址,
否则即使得到这个地址也不给下载。
离线
根据关键字security-token 搜到资料了:
https://help.aliyun.com/document_detail/100624.html
OSS可以通过阿里云STS(Security Token Service)进行临时授权访问。通过STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。
离线
刚关注了一下阿里云oss的售价,存储包 + 流量包
1T 标准存储包 一年 799元
1T/月下行流量包 一年 3636 元
--------------
一年算下来 799 + 3636 = 4435 元
这个价格比公司内部自己搭存储服务器更划算,
还能各种加密,异地容灾备份。
离线
谢谢楼主, 测试代码可以用
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "你的key";
$accessKeySecret = "你的Secret";
$endpoint = "oss-cn-shanghai.aliyuncs.com";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
print $e->getMessage();
}
//新建一个bucket(桶), 相当于文件夹, 所有的文件都存这里面,
//bucket名必须全局唯一,不能和自己的bucket name冲突, 也不能和别人的bucket name冲突。
$ossClient->createBucket('phpweb');
$bucket= "phpweb"; //刚刚建好的bucket
$object = "filename.txt";//文件名
$content = "Hello, OSS!"; //内容
try {
//写文件
$ossClient->putObject($bucket, $object, $content);
} catch (OssException $e) {
print $e->getMessage();
}
//读文件内容
print_r($ossClient->getObject('whycan', "filename.txt"));
//删除 bucket
$ossClient->deleteBucket('phpweb');
?>
OssClient.php: https://github.com/aliyun/aliyun-oss-php-sdk/blob/master/src/OSS/OssClient.php
离线
阿里云oss存储包不贵,但是流量包价格就可观了。
离线
”
1T 标准存储包 一年 799元
1T/月下行流量包 一年 3636 元
--------------
一年算下来 799 + 3636 = 4435 元
“
这种价格对稳定的公司来说是可以接受,只是对个人和初创公司就不太优惠了。
离线