Загрузка и загрузка изображений в хранилище BLOB-объектов Azure

Я пытаюсь загрузить изображение из HTML-формы в хранилище BLOB-объектов Azure с помощью Azure PHP SDK. Проблема появляется, когда я пытаюсь загрузить изображение. Страницу результатов можно увидеть в нижней части поста.

Я сохраняю изображение, используя временное имя, и я думаю, что это одна из двух проблем. Я не уверен, но вторая проблема при загрузке изображения. Должен ли я преобразовать его из getContentStream () в изображение?

$ _FILES [ ‘driverLicenseFront’] [ ‘tmp_name’]

Это HTML-форма для загрузки изображения:

<form role="form" method="POST" action="{path_to_controller}" data-toggle="validator" enctype="multipart/form-data">
<div class="form-group">
<label for="driverLicenseFront">Upload Driver's License(Front)</label>
<input type="file" id="driverLicenseFront" name="driverLicenseFront">
</div>
<submit button>
</form>

В контроллере я храню файл так:

// First check if there is a container
$blob = New Blob($_SESSION['userid']);
$blob->createContainerIfNotExists();
// Upload image to Azure Blob Storage
$content = fopen($_FILES['driverLicenseFront']['tmp_name'].'', "r");
$blob->uploadToContainer($content,'DriverLicenseFrontSide');

капля мой пользовательский класс для работы с каплями

Мне нужно скачать файл по ссылке:

<a href="../controller/blobs.php?blob_name=DriverLicenseFrontSide" target="_new">Download</a>

Я ловлю запрос в контроллере:

if(isset($_GET['blob_name'])){
$blob = New Blob($_SESSION['userid']);
$blob->downloadBlob($_GET['blob_name']);
}

Функция класса Blob:

public function downloadBlob($blob_name){
try {
// Get blob.
$blob = $this->blobRestProxy->getBlob($this->containerName, $blob_name.'.jpg');
fpassthru($blob->getContentStream());
}
catch(ServiceException $e){
// Handle exception based on error codes and messages.
// Error codes and messages are here:
// http://msdn.microsoft.com/library/azure/dd179439.aspx
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code.": ".$error_message."<br />";
}
}

Результат:

JFIF ,, ICC_PROFILE mntrRGB XYZ
$ acsp -) = ޯ U xB ʃ9 descDybXYZ bTRC dmdd gXYZ
hgTRC lumi | measure $ bkpt rXYZ rTRC tech vued
wtptpcprt 7chad , descsRGB IEC61966-2-1, черный, масштабированныйXYZ
$ curv # (- 27; @ EJOTY ^ chmrw | …

0

Решение

Кажется, вы забыли добавить content-type ответа для преобразования двоичного содержимого в содержимое изображения.

Попробуйте добавить следующий код в свой downloadBlob() функция.

$blob = $this->blobRestProxy->getBlob($this->containerName, $blob_name.'.jpg');
header("Content-Type:image/jpeg");
header('Content-Disposition: attachment; filename="' . $blob_name . '"');
fpassthru($blob->getContentStream());

Любое дальнейшее беспокойство, пожалуйста, не стесняйтесь, дайте мне знать.

0

Другие решения

Других решений пока нет …