【问题标题】:Error when uploading a video file as a block blob on Azure using PHP SDK使用 PHP SDK 在 Azure 上将视频文件作为块 Blob 上传时出错
【发布时间】:2018-09-20 17:43:13
【问题描述】:

我尝试使用 Azure 的 PHP SDK 上传大小接近 50 MB 的视频。

我遇到了这个错误:

PHP Fatal error:  Call to undefined method MicrosoftAzure\\Storage\\Blob\\Models\\CreateBlobOptions::getUseTransactionalMD5() in /var/www/<domain>/vendor/microsoft/azure-storage-blob/src/Blob/BlobRestProxy.php on line 1941

只有当我通过 blob 选项设置正确的 mime 类型(在本例中为视频/mp4)时才会发生这种情况。如果我在不设置 blob 选项的情况下上传相同的视频,那么它就可以正常工作。即使将 blob 选项设置为 video/mp4,许多其他视频也能正常工作。这个错误让我失望。

你猜到为什么它在这种情况下将getUseTransactionalMD5 视为未定义的方法?

这是最少的代码

use MicrosoftAzure\Storage\Blob\BlobRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;
$connString = "DefaultEndpointsProtocol=http;AccountName=" . AZURE_ACCOUNTNAME . ";AccountKey=" . AZURE_KEY;
$blobRestProxy = BlobRestProxy::createBlobService($connString);
$content = fopen($file['tmp_name'], "r");
$contentType = "video/mp4";
$options = new CreateBlobOptions();
$options->setContentType($contenttype);
blobRestProxy->createBlockBlob("mycontainer", "myblob", $content, $options);

【问题讨论】:

  • 其他上传成功的文件有多大?另外,您使用的是哪个版本的 SDK?
  • 这不是大小,因为它甚至在开始上传之前就崩溃了。我们通过 composer 使用最新的 SDK。这是 composer.json "require": { "php": "&gt;=5.2.4", "microsoft/azure-storage-queue": "*", "microsoft/azure-storage-blob": "*" } 这实际上是一个问题,因为特性是在 5.4 中添加到 PHP 中的,但这将允许此代码在 PHP 5.2.4 上运行,这无论如何都会破坏它。我们的服务器是在 5.6 上设置的,所以我们现在很好,很快我们将进入 5.7。
  • 我对我的最后一条评论进行了更正。 30 MB 的视频可以正常工作,但较大的视频会失败,因此它可能也有大小。
  • 请尝试将这行代码$options = new CreateBlobOptions();改为$options = new CreateBlockBlobOptions();
  • 修复了它。谢谢你,高拉夫。

标签: php azure azure-storage


【解决方案1】:

如评论中所述,请更改以下代码行:

$options = new CreateBlobOptions();

$options = new CreateBlockBlobOptions();

这将解决问题。

基本上,您收到此错误的原因是 SDK 中的一项重大更改,其中包括在所有上传/下载方法中使用事务 MD5。但是,它通过getUseTransactionalMD5() 暴露在CreateBlockBlobOptions 类中,而不是CreateBlobOptions 类中。因为您使用的是后者而不是前者,所以您会收到此错误消息。

【讨论】:

    猜你喜欢
    • 2020-08-12
    • 2013-01-25
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多