S3アカウントに保存されているファイルへの有効期限が切れるURLを生成する小さなPHPコードを作成しました。私が今コードを持っている方法は、それがページロードの有効期限(PHPが処理されるとき)を設定すると信じています。
フォームの送信を開始するには、有効期限が必要です(フォームボタンをダウンロードボタンとして使用し、アクションをダウンロードURLとして設定しています)。
したがって、誰かがダウンロードをクリックすると、リンクが生成され、有効期限が設定されます。
action = ""の形式からリンク生成コードを呼び出す必要があると思いますが、これをどのように行うかわかりませんか?
私のコードは以下の通りです:
<?php
// Grab the file url
$file_url = get_post_meta($post->ID, 'file_url', true);
// Grab just the filename with extension
$file = basename($file_url);
// AWS details
$accessKey = "<REMOVED>";
$secretKey = "<REMOVED>";
$bucket = "media.themixtapesite.com";
// Set expiry time
$timestamp = strtotime("+30 seconds");
$strtosign = "GET\n\n\n$timestamp\n/$bucket/$item";
// Generate Signature
$signature = urlencode(base64_encode(hash_hmac("sha1", utf8_encode($strtosign), $secretKey, true)));
// Create new S3 Expiry URL
$download_url = "http://$bucket/$file?AWSAccessKeyId=$accessKey&Expires=$timestamp&Signature=$signature";
?>
<?php if (is_user_logged_in()) { ?>
<div class="download_button_div">
<?php echo '<form method="post" action="'.$download_url.'" class="download_button_div">'; ?>
<!--Download counter-->
<input type="hidden" name="download_counter" value="<?php (int)$download_count = get_post_meta($post->ID, 'download_counter', true);
$download_count++;
update_post_meta($post->ID, 'download_counter', $download_count); ?>">
<button type='submit' class='download_button'>Download</button>
</form>
</div>
<?php } else { ?>
いつものように、どんな助けもありがたいです。