gpt4 book ai didi

php - 使用 PHP SDK 将视频文件作为 block blob 上传到 Azure 时出错

转载 作者:行者123 更新时间:2023-12-02 23:08:35 29 4
gpt4 key购买 nike

我尝试使用 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 类型(在本例中为 video/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);

最佳答案

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

$options = new CreateBlobOptions();

$options = new CreateBlockBlobOptions();

这将解决问题。

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

关于php - 使用 PHP SDK 将视频文件作为 block blob 上传到 Azure 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49764899/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com