На основании этого сообщения, это должно быть возможно. Однако я не могу заставить его работать. Одна запутанная часть заключается в том, что я использую правильную версию azure-storage? В этом посте Тимм сказал год назад
Это выпущено в 0.9.x.
Однако версии 0.9 нет. Последней версией azure-storage является 0.6.0.
Вот код моего сервера (node.js):
var buf = new Buffer(upd.picture, 'binary');
blobService.createBlockBlobFromText(containerName, fileName, buf, function (error, result, response) {
});
На стороне клиента (angular.js) двоичные данные читаются так:
var file = document.getElementById('file').files[0];
var reader = new FileReader();
reader.onloadend = function (e) {
upd.picture = e.target.result;
....
}
reader.readAsBinaryString(file);
Для моего тестирования я загрузил изображение в формате jpg, файл, сохраненный в лазурном BLOB-объекте, не может отображаться в веб-браузере. Однако, если я использую createBlockBlobFromLocalFile для загрузки файла, он работает. Что я сделал не так?
ОБНОВЛЕНИЕ:
Хорошо, я наконец понял это. Мне просто нужно изменить одну строку выше на
var buf = new Buffer(upd.picture.substr(23), 'base64');
Проблема заключалась в том, что файл уже преобразован в base64 с заголовком «data:image/jpeg;base64», что испортило двоичные данные.