Как загрузить изображение в хранилище Azure через PHP? - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь загрузить изображение в хранилище больших двоичных объектов через API, построенный на PHP.

В настоящее время у меня есть это, строка base64 отправляется через JSON Post.

//The base 64 string
$displayPictureBase64 = $this->ValidateParameter('DisplayPicture', $this->param, STRING);
//Decode it to byte array.
$displayPicture[] = base64_decode($displayPictureBase64);
//Name of the blob
$blobName = "MyBlobName";

//New BlobStorage class.
$blob = new BlobStorage;
$blob->AddBlob('user-display-pictures', $blobName, $displayPicture);

Это вызывает функцию AddBlob ...

public function AddBlob($containerName, $fileName, $fileToUpload)
{
//Upload blob
$this->blobClient->createBlockBlob($containerName, $fileName, $fileToUpload);
}

(PS. У меня есть учетные данные для blobClient, просто я не включил его здесь, чтобы сохранить ненужное пространство.)

ПроблемаЯ получаю, что функция blobClient-> createBlockBlob принимает эти параметры ...

 * @param string                          $container The name of the container.
 * @param string                          $blob      The name of the blob.
 * @param string|resource|StreamInterface $content   The content of the blob.

Итак, у меня проблема в том, что третий параметр, который я посылаю, имеетТип массив, но он должен быть строкой в ​​соответствии с этим.Это ошибка PHP, которую я получаю ...

Неустранимая ошибка PHP: Uncaught InvalidArgumentException: Неверный тип ресурса: массив в D: \ home \ vendor \ guzzlehttp \ psr7 \ src \ functions.php: 116

Как загрузить изображение в хранилище BLOB-объектов в виде строки? документы показывают только, как загружать текстовые файлы, а не файлы изображений.Спасибо!

1 Ответ

0 голосов
/ 14 декабря 2018

Я исправил это, выполнив следующее ...

//The base 64 string
$displayPictureBase64 = $this->ValidateParameter('DisplayPicture', $this->param, STRING);

//Convert the file to stream
$fileToUpload = fopen('data:image/jpeg;base64,' . $displayPictureBase64,'r');
//Name of the blob
$blobName = "MyBlobName";

//New BlobStorage class.
$blob = new BlobStorage;
$blob->AddBlob('user-display-pictures', $blobName, $fileToUpload);
...