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

名前空間: microsoft.graph

警告

このエンドポイントでは、正常に機能するには TLS 1.2 が必要です。 Microsoft は、TLS 1.0 および 1.1 のサービスとサービスのOffice 365をAzure ADしました。 Microsoft はGraph 2 つのプロトコルを引き続きサポートしますが、トランスポート レベルのエラーが発生する可能性があります。 TLS 1.0 および 1.1 の廃止の詳細については、「環境で TLS 1.2のサポートを有効にする」を参照してください。

driveItem のプライマリ ストリーム (ファイル) のコンテンツをダウンロードします。 file プロパティを持つ driveItems のみがダウンロード可能です。

アクセス許可

この 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

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

オプションの要求ヘッダー

名前 説明
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 アプリでファイルをダウンロードするには、302 リダイレクトで応答しますので、/content API を使用できません。 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 ヘッダーは実際の @microsoft.graph.downloadUrl URL に追加する必要があり、/content の要求には追加しない点に注意してください。

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>

エラー応答

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