私のphpコードは正しいようです(ブロブストレージと通信する部分)。
//talk to blob storage, get links, based on file name
$storageClient = $this->azure->get_blob_storage();
foreach($result as $photo)
{
$sharedAccessUrl[] = $storageClient->generateSharedAccessUrl(
'container',
$photo['File'],
'b',
'r',
$storageClient ->isoDate(time()),
$storageClient ->isoDate(time() + 3000)
);
}
foreach($sharedAccessUrl as $item)
{
$pictures[] = $item;
}
これにより、すべての絶対 URL リンクが取得され、配列内に保存され、ビューに渡されて画像が取得されます。このような:
<img src="<?php echo $pictures[$i]; ?>" height=100px width="100px">
(where pictures[$i] = http://azure blobstorage etc...
私のローカル マシンでは、ページを更新するたびに、または画像があるページをフリックするたびに、すべて正常に読み込まれます。ただし、アプリを Azure Web サイトにアップロードすると、画像が破損することが多く、画像が表示されるたびに「ページを更新する」必要があります。これは、画像が表示されるはずの div の要素の検査をクリックした後、画像へのリンクが正しいにもかかわらずです。
私は 3 か月の試用版から azure の Web サイトの "共有バージョン" を使用しています。PHP のバージョンは、.net フレームワークとともに、私のローカル マシンとまったく同じです。
なぜこれが起こっているのか誰にも分かりますか?
ログを確認しましたが、役に立ちません。
解決:
BLOB ストレージと Azure Web サイトで設定された時刻に遅延があるようです。
$storageClient ->isoDate(time()-60),
$storageClient ->isoDate(time() + 3000)
最初の行に -60 を追加します。そして、それはうまくいくはずです。