driveItem コンテンツをダウンロードする

名前空間: microsoft.graph

重要

Microsoft Graph の /beta バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、Version セレクターを使用します。

driveItem のプライマリ ストリーム (ファイル) のコンテンツをダウンロードします。 ファイル プロパティを持つ driveItem オブジェクトのみをダウンロードできます。

ダウンロードするアイテムの ID を取得するには、「 Get driveItem」を参照してください。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国
✅ ✅ ✅ ✅

アクセス許可

この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。 アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、「アクセス許可のリファレンス」を参照してください。

アクセス許可の種類 最小特権アクセス許可 より高い特権のアクセス許可
委任 (職場または学校のアカウント) Files.Read Files.ReadWrite, Files.Read.All, Files.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All
委任 (個人用 Microsoft アカウント) Files.Read Files.ReadWrite, Files.Read.All, Files.ReadWrite.All
アプリケーション Files.Read.All Files.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All

注:

SharePoint Embedded では、コンテナーのコンテンツにアクセスするための FileStorageContainer.Selected アクセス許可が必要です。 このアクセス許可は、前述のアクセス許可とは異なります。 Microsoft Graph のアクセス許可に加えて、アプリにはこの API を呼び出すために必要な コンテナーの種類のアクセス許可 が必要です。 詳細については、「 SharePoint Embedded の認証と承認」を参照してください。

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

要求ヘッダー

名前 説明
Authorization ベアラー {token}。 必須です。 認証と認可についての詳細をご覧ください。
If-None-Match この要求ヘッダーが含まれている場合、指定された eTag (または cTag) がファイルの現在のタグに一致すると、HTTP 304 Not Modified 応答が返されます。 省略可能。
推奨: forceInfectedDownload 指定された場合、要求は感染したファイルをダウンロードできます。 委任された要求の場合、テナント設定の DisallowInfectedFileDownload が有効になっている場合、テナント管理者またはグローバル管理者のみがファイルをダウンロードする可能性があります。 アプリケーションのみの要求により、テナント設定に関係なく感染したファイルがダウンロードされます。 省略可能。

例

次の例は、完全なファイルをダウンロードする方法に関する要求を示しています。

要求

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

応答

次の例は応答を示しています。

ファイルの事前認証済みダウンロード URL にリダイレクトする 302 Found 応答を返します。 これは、DriveItem の @microsoft.graph.downloadUrl プロパティで使用できる URL と同じです。

ファイルの内容をダウンロードするには、アプリケーションが応答の Location ヘッダーに従う必要があります。 多くの HTTP クライアント ライブラリは 302 リダイレクトに従い、ファイルのダウンロードをすぐに開始します。

事前認証されたダウンロード URL は短時間 (数分) のみ有効であり、ダウンロードに Authorization ヘッダーは必要ありません。

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

JavaScript アプリでのファイルのダウンロード

JavaScript アプリでファイルをダウンロードするために、 /content API は 302 リダイレクトで応答するため、使用することはできません。 Authorization ヘッダーを指定する場合など、クロスオリジン リソース共有 (CORS)プリフライトが必要な場合、302リダイレクトは明示的に禁止されます。

代わりに、アプリで @microsoft.graph.downloadUrl プロパティを選択する必要があります。このプロパティは、/content がリダイレクトした URL と同じ URL を返します。 この URL は、XMLHttpRequest を使用して直接要求できます。 これらの URL は事前認証されているため、CORS プリフライト要求なしで取得できます。

例

ファイルのダウンロード URL を取得するには、まず @microsoft.graph.downloadUrl プロパティを含む要求を作成します。

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

この呼び出しは、ファイルの ID とダウンロード URL を返します。

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

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

次に、@microsoft.graph.downloadUrl で提供された URL の XMLHttpRequest を作成して、ファイルを取得できます。

部分的な範囲のダウンロード

ファイルからバイトの範囲の一部をダウンロードするために、アプリは RFC 2616 で指定されている Range ヘッダーを使用できます。 Range ヘッダーは、/contentの要求ではなく、実際の@microsoft.graph.downloadUrl URL に追加する必要があります。

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

この呼び出しは、要求範囲 (バイト単位) を持つ HTTP 206 Partial Content 応答をファイルから返します。 範囲を生成できない場合、Range ヘッダーは無視され、ファイルの完全な内容を含む HTTP 200 応答が返されます。

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/2048

<first 1024 bytes of file>

エラー応答

エラーが返される方法の詳細については、「 エラー応答」 を参照してください。