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.