Создание файла в хранилище файлов отличается от загрузки большого двоичного объекта.
В хранилище файлов первое, что вам нужно сделать, это создать пустой файл с помощью операции Create File
REST . Во время этой операции вы указываете размер файла, который вы sh создаете (длина вашего контента) в x-ms-content-length
заголовке запроса.
После создания пустого файла вы отправляете контент для записи в файл используя операцию Put Range
. Именно сюда вы отправляете контент. Вам нужно будет использовать заголовок запроса Range
или x-ms-range
, чтобы указать, где именно в этом пустом файле вы будете sh записывать отправляемые данные.
На их основе я изменил ваш код. Вот модифицированные методы:
async function upload(url, headers, content) {
if (!url) { return; }
const init = {
method: 'PUT',
body: content,
headers: headers
};
console.log(init);
const response = await fetch(url, init);
document.getElementById('response-content').innerText = await response.text();
}
async function uploadToFileStorage() {
console.log('creating empty file');
const url = document.getElementById('url').value;
const content = document.getElementById('content').value;
const headers = {
'content-length': 0,
'x-ms-type': 'file',
'x-ms-content-length': content.length
}
await upload(url, headers, '');
console.log('empty file created.');
const url2 = url + '&comp=range';
const headers2 = {
'Content-Length': content.length,
'x-ms-version': '2015-02-21',
'Range': 'bytes=0-' + (content.length-1),
'x-ms-write': 'update'
};
await upload(url2, headers2, content);
}