Compartilhar via


Transferir conteúdo driveItem

Namespace: microsoft.graph

Baixar o conteúdo do fluxo principal (arquivo) de um driveItem. Apenas os objetos driveItem com a propriedade de ficheiro podem ser transferidos.

Para obter o ID do item a transferir, veja Obter driveItem.

Esta API está disponível nas seguintes implementações de cloud nacionais.

Serviço global US Government L4 US Government L5 (DOD) China operada pela 21Vianet

Permissões

Escolha a permissão ou permissões marcadas como menos privilegiadas para esta API. Utilize uma permissão ou permissões com privilégios mais elevados apenas se a sua aplicação o exigir. Para obter detalhes sobre as permissões delegadas e de aplicação, veja Tipos de permissão. Para saber mais sobre estas permissões, veja a referência de permissões.

Tipo de permissão Permissões com menos privilégios Permissões com privilégios superiores
Delegado (conta corporativa ou de estudante) Files.Read Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All
Delegado (conta pessoal da Microsoft) Files.Read Files.ReadWrite, Files.Read.All, Files.ReadWrite.All
Application Files.Read.All Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All

Solicitação HTTP

GET /drives/{drive-id}/items/{item-id}/content
GET /groups/{group-id}/drive/items/{item-id}/content
GET /me/drive/root:/{item-path}:/content
GET /me/drive/items/{item-id}/content
GET /shares/{shareIdOrEncodedSharingUrl}/driveItem/content
GET /sites/{siteId}/drive/items/{item-id}/content
GET /users/{userId}/drive/items/{item-id}/content

Cabeçalhos de solicitação

Nome Descrição
Autorização {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.
if-none-match Cadeia de caracteres . Se este cabeçalho de solicitação estiver incluso e a eTag (ou cTag) fornecida corresponder à marca atual do arquivo, uma resposta HTTP 304 Not Modified será exibida.

Exemplo

Eis um exemplo para transferir um ficheiro completo.

Solicitação

GET /me/drive/items/{item-id}/content

Resposta

Devolve uma 302 Found resposta redirecionando para um URL de transferência pré-autenticado para o ficheiro, que é o mesmo URL disponível através da @microsoft.graph.downloadUrl propriedade no DriveItem.

Para transferir o conteúdo do ficheiro, a sua aplicação tem de seguir o Location cabeçalho na resposta. Várias bibliotecas de cliente HTTP seguirão automaticamente o redirecionamento 302 e começarão a baixar imediatamente o arquivo.

Os URLs de transferência pré-autenticados só são válidos por um curto período de tempo (alguns minutos) e não necessitam de um Authorization cabeçalho para transferir.

HTTP/1.1 302 Found
Location: https://b0mpua-by3301.files.1drv.com/y23vmagahszhxzlcvhasdhasghasodfi

Download de arquivos em aplicativos JavaScript

Para transferir ficheiros numa aplicação JavaScript, não pode utilizar a /content API, uma vez que esta ação responde com um 302 redirecionamento. Um 302 redirecionamento é explicitamente proibido quando é necessária uma verificação prévia da Partilha de Recursos Transversais à Origem (CORS), tal como ao fornecer o cabeçalho Autorização.

Em vez disso, seu aplicativo precisa selecionar a propriedade @microsoft.graph.downloadUrl, que retorna o mesmo URL para o qual /content direciona. Essa URL pode ser solicitada diretamente usando XMLHttpRequest. Uma vez que estes URLs são pré-autenticados, podem ser obtidos sem um pedido de verificação prévia CORS.

Exemplo

Para recuperar a URL de download de um arquivo, faça primeiro uma solicitação que inclua a propriedade @microsoft.graph.downloadUrl:

GET /drive/items/{item-ID}?select=id,@microsoft.graph.downloadUrl

A chamada devolve o ID e o URL de transferência de um ficheiro:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "12319191!11919",
  "@microsoft.graph.downloadUrl": "https://..."
}

Você pode fazer uma XMLHttpRequest para a URL fornecida em @microsoft.graph.downloadUrl para recuperar o arquivo.

Downloads de intervalo parcial

Para baixar um intervalo parcial de bytes do arquivo, o aplicativo pode usar o cabeçalho Range conforme especificado em RFC 2616. Tem de acrescentar o Range cabeçalho ao URL real @microsoft.graph.downloadUrl e não ao pedido de /content.

GET https://b0mpua-by3301.files.1drv.com/y23vmag
Range: bytes=0-1023

A chamada devolve uma HTTP 206 Partial Content resposta com o intervalo de bytes de pedido do ficheiro. Se não for possível gerar o intervalo, o cabeçalho Intervalo poderá ser ignorado e será devolvida uma HTTP 200 resposta com o conteúdo completo do ficheiro.

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/2048
Content-Type: application/octet-stream

<first 1024 bytes of file>

Respostas de erros

Confira mais informações sobre como os erros são retornados em Respostas de Erros.