· 6 years ago · Jul 10, 2019, 02:34 AM
1<?php
2$ACCESS_KEY = 'YOUR_KEY';
3$SECRET_KEY = 'YOUR_SECRET_KEY';
4$expires = time() + 3600;
5$ip = '';
6
7$bucket = 'BUCKET_NAME';
8$file = 'FILE_NAME';
9
10$type = $md5 = '';
11$sig_str = 'GET' . "\n$md5\n$type\n$expires\n";
12if (!empty($ip)) {
13 $sig_str .= 'x-amz-ip:' . $ip . "\n";
14}
15$sig_str .= (empty($bucket) ? '':'/' . $bucket) . $file;
16$s3_signature = base64_encode(mhash(MHASH_SHA1, utf8_encode($sig_str), $SECRET_KEY));
17
18$query = [
19 'Expires' => $expires,
20 'Signature' => $s3_signature,
21 'AWSAccessKeyId' => $ACCESS_KEY
22];
23if (!empty($ip)) {
24 $query['x-amz-ip'] = $ip;
25}
26
27echo 'https://'. $bucket .'.s3.nl-ams.scw.cloud' . $file . '?' . http_build_query($query) . "\n";