Загрузка файлов в Sharepoint может быть довольно сложной задачей. Существуют разные способы загрузки файлов, такие как CSOM (объектная модель на стороне клиента) или Graph API.

CSOM работает напрямую с API-интерфейсами SharePoint, тогда как Graph больше похож на Wrapper и собственный сервис.

В CSOM есть разные функции для загрузки файлов. Здесь показано, какую функцию следует использовать в каком случае:

Загрузка больших файлов — образец надстройки SharePoint | Документы Майкрософт

При работе с CSOM я бы использовал атрибут Content класса FileCreationInformation для загрузки файла размером менее 10 МБ.

Для файлов размером более 10 МБ я бы использовал методы Chunking класса File.

Следующий код принадлежит Microsoft и может быть просмотрен в их официальной документации.

Второй частью будет загрузка файлов с помощью Graph API. В этом примере я буду использовать API Microsoft Graph с Javascript. Здесь вам сначала нужно использовать некоторую платформу авторизации, например MSALJS, чтобы получить токен для Microsoft Graph. С помощью этого токена вы начинаете вызывать вызовы Graph API createUploadSession. Официальная документация говорит, что вам нужно использовать команду POST. В последний раз, когда я пробовал, это работало только с командой PUT.

В теле команды вам необходимо определить Conflictbehavior, FIlename и Filesize как объект JSON.

например:

Место, куда будет загружен файл, задается через URL-адрес команды CreateUploadSession. Вот как создается URL:

«https://graph.microsoft.com/v1.0/sites/, siteID, «/drives/», диск, «/root:/», путь к папке, «/», имя файла, «:/createUploadSession»

В нем должны быть определены SiteId, DriveId, Folterpath и Filename.

Успешный вызов вернет UploadUrl. Этот URL-адрес теперь можно использовать для загрузки фрагментов файла.

Для этого будет создан новый набор вызовов для Graph API. Destination — это URL-адрес, полученный на предыдущем шаге. Следующее, что Чанк будет установлен в массив UINT8. Это может быть достигнуто следующим методом:

var data = новый массив Uint8Array (массив байтов);

В данном случае массив байтов — это чанк. Кроме того, нам нужно установить следующие заголовки:

xhr.setRequestHeader('Content-Range', ''.concat("байты", от, "-", до, "/", totalFileSize));

xhr.setRequestHeader («Длина содержимого», (общий размер файла));

Байты от и до определяют, какие чанки мы отправляем прямо сейчас.

например, от 0 до 1023. следующим будет 1024–2047 годы.

В Contentlength должен быть указан общий размер файла.

Теперь мы можем загружать Chunk for Chunk в URL-адрес, пока не будет загружен весь файл.

Если мы хотим прервать загрузку, мы можем просто отправить HTTP-запрос на удаление на URL-адрес.

Когда запрос терпит неудачу, вы можете просто повторить его. Если запрос createUpload не будет выполнен в течение определенного периода времени, загрузка будет прервана. В течение этого времени никакая другая загрузка не может быть запущена для той же локации.

Полный код загрузки для Javascript в надстройке Office можно увидеть здесь: