【问题标题】:Getting broken images from blob storage in Azure websites从 Azure 网站中的 blob 存储中获取损坏的图像
【发布时间】:2013-04-26 22:32:29
【问题描述】:

我的 php 代码似乎是正确的(与 blob 存储对话的部分)。

        //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 网站时,我经常会收到损坏的图像,然后每次出现图像时都需要“刷新页面”。尽管图像的链接是正确的,但在我单击应该出现图像的 div 上的检查元素之后。

我正在使用 3 个月试用期的 azure 网站的“共享版本”。 PHP版本和我本地机器一模一样,还有.net框架。

有人知道为什么会这样吗?

我检查了日志,但它们没有帮助。

解决方案:

在 blob 存储和天蓝色网站上设置的时间似乎有所延迟。

           $storageClient ->isoDate(time()-60),
           $storageClient ->isoDate(time() + 3000)

在第一行加上 -60。它应该可以工作。

【问题讨论】:

    标签: php azure codeigniter-2 azure-storage


    【解决方案1】:

    看起来您回答了自己的问题。与其说是延迟,不如说是时钟漂移以及计算节点和存储节点之间的时间同步。将开始时间设置为您希望链接开​​始工作之前的一两分钟总是一个好主意(假设您打算让链接“立即”工作)。回到过去没有伤害开始时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2015-03-26
      • 2014-12-21
      • 2017-01-27
      • 2020-01-09
      • 2017-08-08
      • 1970-01-01
      相关资源
      最近更新 更多