Я занимаюсь разработкой веб-приложения с использованием служб Microsoft Azure.Я перехожу по этой ссылке, чтобы загрузить изображение в мое хранилище BLOB-объектов, но в документе отсутствуют некоторые фрагменты, которые приводят к определенным проблемам.Например, как мы определяем переменную $ fileToUpload и как она будет относиться к переменной $ myfile?Кроме того, если мы хотим загрузить файл из нашей системы во время работы приложения, в какой из двух переменных у нас должен быть абсолютный путь к моему изображению?Код, который я написал до сих пор для загрузки изображения, выглядит следующим образом:
function imageupload(string $current_user){
$pt_id = $_POST['patientid'];
if (strcmp($pt_id,"")==0){
echo "Select PatientID to continue";
}else{
$accountexists = load($current_user, $pt_id);
if ($accountexists == 0){
$error = "Patient Id does not exist";
echo $error;
}else{
$img_path = $_POST['uploadI'];
if (strcmp($img_path, "")==0){
echo "Enter valid image path <br />";
}
else{
require_once 'vendor/autoload.php';
$connectionString = '****';
// Create blob client.
$blobClient = BlobRestProxy::createBlobService($connectionString);
# Create the BlobService that represents the Blob service for the storage account
$containerName = $current_user;
$num = rand(10,10000);
$num2 = (string) $num;
$fileToUpload = $pt_id."_".$num2;
# Upload file as a block blob
echo "Uploading image: ".PHP_EOL;
echo $img_path;
echo "<br />";
$content = fopen($img_path, "r");
//Upload blob
$blobClient->createBlockBlob($containerName, $fileToUpload, $content);
echo "Image uploaded successfully! <br />";
}
}
}
}
В этом коде я сохраняю свой путь к изображению в переменной $ img_path.И это код, который я использую для отображения изображения позже:
// Gets all the images from the hospital's container and filters out the images corresponding to a particular patient.
// For the patient, the image would be saved on cloud with name as: <patientid>_<some random number>
// Eg- patient id= pt1 , so image name could be- pt1_3682
function uploadedimage(string $current_user, string $HospitalId, string $PatientId){
$containerName = $HospitalId;
$url = "";
try{
// Get blob.
require_once 'vendor/autoload.php';
// use MicrosoftAzure\Storage\Common\ServicesBuilder;
$connectionString = '****';
$blobClient = BlobRestProxy::createBlobService($connectionString);
$blob_list = $blobClient->listBlobs($containerName);
$blobs = $blob_list->getBlobs();
$strlen = strlen($PatientId);
$array_user = array();
// echo "These are the blobs present in the container: ";
foreach($blobs as $blob)
{
$name = $blob->getName();
$namesub = substr($name,0, $strlen);
if (strcmp($namesub, $PatientId) == 0){
array_push($array_user, $blob);
}
}
}
catch(ServiceException $e){
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code.": ".$error_message."<br />";
}
$url = "";
try {
foreach($array_user as $blob)
{
$name = $blob->getName();
$url = $blob->getUrl();
echo "<img src=\"".$url."\" alt=\"image post\"></br></br>";
}
}
catch(ServiceException $e){
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code.": ".$error_message."<br />";
}
}
Но я не могу просмотреть свое изображение в HTML, который я указал.Все, что я получаю, это текст по умолчанию "изображение поста".Таким образом, я пришел к выводу, что в моем коде чего-то не хватает, из-за чего изображения не загружаются, но я не могу понять это из учебника по Azure.
Редактировать: я проверил свойства своего блобаи все они имеют размер 0, что означает, что они не загружаются должным образом.Также я понял, что в моей папке git есть некоторые изображения, которые были отправлены в облако вместе с моим кодом.Таким образом, если существует определенное изображение с именем abc.png , уже существующее в том же каталоге, что и мой код в Azure, и при загрузке этого изображения из моего веб-приложения, если в текстовом поле пути я указываю только abc.png , это изображение загружается в мой контейнер в правильном размере, но если это же изображение присутствует на моем рабочем столе и если я указываю полный путь к файлу моей локальной системы для этого изображения (или другого изображения)отсутствует в каталоге git, существующем в Azure) как C: /Desktop/abc.png, он загружается только как изображение размером 0 байт (которое по сути загружается неправильно).В чем могут быть проблемы, если он не может получать изображения из моей системы и может принимать только изображения, уже существующие в его каталоге git?