driveItem コンテンツのダウンロード

名前空間: microsoft.graph

driveItem のプライマリ ストリーム (ファイル) のコンテンツをダウンロードします。 ダウンロードできるのは、file プロパティを持つ 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 文字列型 (String ) の値を使用します。 この要求ヘッダーが含まれている場合、指定された eTag (または cTag) がファイルの現在のタグに一致すると、HTTP 304 Not Modified 応答が返されます。

例

完全なファイルをダウンロードする例を次に示します。

要求

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 ヘッダーを使用できます。 /contentの要求ではなく、Range ヘッダーを実際の@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
Content-Type: application/octet-stream

<first 1024 bytes of file>

エラー応答

エラーがどのように返されるかについては、「エラー応答」を参照してください。