Загрузка файлов в 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 можно увидеть здесь: