Поделиться через


driveItem: copy

Пространство имен: microsoft.graph

Важно!

API версии /beta в Microsoft Graph могут быть изменены. Использование этих API в производственных приложениях не поддерживается. Чтобы определить, доступен ли API в версии 1.0, используйте селектор версий.

Асинхронно создайте копию элемента driveItem (включая все дочерние элементы) под новым родительским элементом или с новым именем. После подтверждения запроса он входит в очередь. Фактическое копирование, включая все подэлементы, происходит в неопределенное время. Ход выполнения сообщается до завершения операции путем отслеживания хода выполнения.

Этот API доступен в следующих национальных облачных развертываниях.

Глобальная служба Правительство США L4 Правительство США L5 (DOD) Китай управляется 21Vianet

Разрешения

Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.

Тип разрешения Разрешения с наименьшими привилегиями Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись) Files.ReadWrite Files.ReadWrite.All, Sites.ReadWrite.All
Делегированные (личная учетная запись Майкрософт) Files.ReadWrite Files.ReadWrite.All
Приложение Files.ReadWrite.All Sites.ReadWrite.All

Примечание.

SharePoint Embedded требует разрешения на FileStorageContainer.Selected доступ к содержимому контейнера. Это разрешение отличается от указанных ранее. Дополнительные сведения см. в статье Проверка подлинности и авторизация SharePoint Embedded.

Помимо разрешений Microsoft Graph, ваше приложение должно иметь необходимые разрешения на уровне типа контейнера или разрешения для вызова этого API. Дополнительные сведения см. в разделе Типы контейнеров. Дополнительные сведения о разрешениях на уровне типа контейнера см. в статье Авторизация SharePoint Embedded.

HTTP-запрос

POST /drives/{driveId}/items/{itemId}/copy
POST /groups/{groupId}/drive/items/{itemId}/copy
POST /me/drive/items/{item-id}/copy
POST /sites/{siteId}/drive/items/{itemId}/copy
POST /users/{userId}/drive/items/{itemId}/copy

Необязательные параметры запросов

Этот метод поддерживает @microsoft.graph.conflictBehavior параметр запроса для настройки поведения при возникновении конфликта.

Значение Описание
сбой По умолчанию сообщается о сбое.
replace Перезаписать существующий элемент на целевом сайте.
rename Переименуйте элемент.

Примечание.

Параметр conflictBehavior не поддерживается для потребителя OneDrive.

Текст запроса

В тексте запроса предоставьте JSON-объект с указанными ниже параметрами.

Имя Значение Описание
parentReference ItemReference Необязательный параметр. Ссылка на родительский элемент, в который создается копия.
name string Необязательный. Новое имя копии. Если эта информация не указана, используется то же имя, что и исходное.
childrenOnly Boolean Необязательное свойство. Если задано значение true, то копируются дочерние элементы элемента driveItem , но не сам объект driveItem . Значение по умолчанию — false. Допустимо только для элементов папки.

Примечание.

Параметр parentReference должен включать driveId параметры и id для целевой папки.

В одном запросе childrenOnly параметр копирует 150 дочерних элементов, а для элементов внуков применяется ограничение SharePoint. Дополнительные сведения см. в разделе Ограничение SharePoint.

Отклик

Ответ возвращает сведения о том, как отслеживать ход выполнения копирования после принятия запроса. Ответ указывает, была ли операция копирования принята или отклонена, например, если имя целевого файла уже используется.

Примеры

Пример 1. Копирование файла в папку

В следующем примере файл, идентифицируемый , {item-id} копируется в папку со значением driveId и id . Новая копия файла называется contoso plan (copy).txt.

Запрос

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "name": "contoso plan (copy).txt"
}

Отклик

Ниже показан пример отклика.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Пример 2. Копирование дочерних элементов в папку

В следующем примере дочерние элементы в папке, определяемой с помощью , {item-id} копируются в папку, определяемую driveId с помощью значения и id . Параметр childrenOnly имеет значение true.

Запрос

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "childrenOnly": true
}

Отклик

Ниже показан пример отклика.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Мониторинг важен, так как операция копирования с дочерними только выполняется в нескольких операциях.

Пример 3. Копирование дочерних элементов в папку с конфликтом имен

В следующем примере предпринимается попытка скопировать дочерние элементы в папку, определяемую методом , {item-id} в папку, определяемую driveId с помощью значения и id . Назначение уже имеет то же имя, что и в источнике. Операция принимается, но во время обработки возникает сбой.

Запрос

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

Отклик

Ниже показан пример отклика.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Следуйте url-адресу монитора.

{
  "id": "46cf980a-28e1-4623-b8d0-11fc5278efe6",
  "createdDateTime": "0001-01-01T00:00:00Z",
  "lastActionDateTime": "0001-01-01T00:00:00Z",
  "status": "failed",
  "error": {
    "code": "nameAlreadyExists",
    "message": "Name already exists"
  }
}

Чтобы устранить эту ошибку, используйте необязательный параметр запроса @microsoft.graph.conflictBehavior.

Пример 4. Копирование дочерних элементов в папку с конфликтом имен conflictBehavior

В следующем примере дочерние элементы в папке, определяемой с помощью , {item-id} копируются в папку, определяемую driveId с помощью значения и id . Необязательный параметр @microsoft.graph.conflictBehavior запроса задается для замены. Возможные значения — replace, rename и fail. Назначение уже имеет то же имя, что и в источнике.

Запрос

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy?@microsoft.graph.conflictBehavior=replace
Content-Type: application/json

{
  "parentReference": {
    "driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

Отклик

Ниже показан пример отклика.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Пример 5. Копирование дочерних элементов в папке из корневого каталога

В следующем примере предпринимается попытка скопировать дочерние элементы в папке, определяемой {item-id} (также известной как root), в папку, определяемую со значением driveId и id . Для childrenOnly параметра не задано значение true. Запрос завершается ошибкой, так как операция копирования не может быть выполнена в корневой папке.

Запрос

POST https://graph.microsoft.com/beta/me/drive/items/root/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

Отклик

Ниже показан пример отклика.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 283

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Cannot copy the root folder.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe"
    }
  }
}

Чтобы устранить эту ошибку, задайте для childrenOnly параметра значение true.

Пример 6. Копирование дочерних элементов в папку, в которой источник содержит более 150 прямых дочерних элементов

В следующем примере предпринимается попытка скопировать дочерние элементы в папку, определяемую методом , {item-id} в папку, определяемую driveId с помощью значения и id . Параметр childrenOnly имеет значение true. Элемент диска, идентифицируемый , {item-id} содержит более 150 прямых дочерних элементов. Запрос завершается ошибкой, так как ограничение составляет 150 прямых дочерних элементов.

Запрос

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

Отклик

Ниже показан пример отклика.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 341

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Direct child count limit exceeded. Cannot copy children only when there are more than 150 direct children.",
    "innerError":
    {
      "code": "directChildrenLimitExceeded",
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe"
    }
  }
}

Чтобы устранить эту ошибку, реорганизуйте структуру исходных папок только для 150 дочерних элементов.

Пример 7. Копирование дочерних элементов, где исходный элемент является файлом

В следующем примере предпринимается попытка скопировать дочерние элементы в папку, определяемую методом , {item-id} в папку, определяемую driveId с помощью значения и id . Ссылается {item-id} на файл, а не на папку. Параметр childrenOnly имеет значение true. Запрос завершается ошибкой, {item-id} так как является диском driveItem без папки.

Запрос

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "childrenOnly": true
}

Отклик

Ниже показан пример отклика.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 290

{
  "error":
  {
    "code": "invalidRequest",
    "message": "childrenOnly option is not valid for file items.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe""
    }
  }
}

Пример 8. Копирование дочерних элементов в папку с childrenOnly и именем

В следующем примере предпринимается попытка скопировать дочерние элементы в папку, определяемую методом , {item-id} в папку, определяемую driveId с помощью значения и id . Параметр childrenOnly имеет значение true и задает name значение . Запрос завершается ошибкой, так как childrenOnly и name не могут использоваться вместе.

Запрос

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "6F7D00BF-FC4D-4E62-9769-6AEA81F3A21B",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "name": "contoso plan (copy).txt",
  "childrenOnly": true
}

Отклик

Ниже показан пример отклика.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 285

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Cannot use name parameter alongside childrenOnly.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe""
    }
  }
}

Сведения об ошибках см. в разделе Ответы на ошибки.