我已經爲亞馬遜s3創建了一個簽名的$ URL,並且它在瀏覽器中完美打開。檢查亞馬遜s3上是否存在文件簽名的URL
http://testbucket.com.s3.amazonaws.com/100-game-play-intro-1.m4v?AWSAccessKeyId=AKIAJUAjhkhkjhMO73BF5Q&Expires=1378465934&Signature=ttmsAUDgJjCXepwEXvl8JdFu%2F60%3D
**桶名稱和ACCESSKEY在這個例子中
但是我想,然後使用下面的函數來檢查(使用curl)文件是否存在改變。它失敗了CURL連接。如果我使用s3之外的圖像的URL替換上面的$ URL,那麼這段代碼完美地工作。
我知道文件存在於亞馬遜偏偏這個代碼失敗,如果使用的是已簽署的網址如上
任何想法不能工作了?
感謝
這裏是我的代碼。
function remoteFileExists($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//don't fetch the actual file, only get header to check if file exists
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, true);
$result = curl_exec($ch);
curl_close($ch);
if ($result !== false) {
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
$ret = true;
} else {
$ret = false;
}
} else {
$ret='connection failed';
}
return $ret;
}
當我使用此代碼來檢查文件是否與已簽署的網址S3存在,因爲它是一個專用桶(即沒有公共政策),它總是失敗,「連接失敗」,表明捲曲連接本身失敗。 –
對不起,我很容易用AWS PHP SDK來解決這個問題,但是我試圖讓它在沒有SDK的情況下工作,因爲我將這個功能添加到wordpress插件中。謝謝 –