添付ファイル: createUploadSession
[アーティクル]
02/03/2022
3 人の共同作成者
この記事の内容
名前空間: microsoft.graph
アプリがファイルの範囲を繰り返しアップロードして、指定したアイテムにファイルを添付できるアップロード セッションをOutlookします。 アイテムには、メッセージまたは イベント を指定 できます 。
ファイル サイズが 3 MB ~ 150 MB の場合は、この方法を使用してファイルを添付します。 3 MB POST 未満のファイルを添付するには、Outlook アイテムの添付ファイル ナビゲーション プロパティに対して操作を実行します。メッセージまたはイベントに対してこれを行う方法 を参照 してください。
応答の一部として、このアクションは、後続の順次クエリで使用できるアップロード URL を PUT 返します。 各操作の要求ヘッダー PUT を使用すると、アップロードする正確なバイト範囲を指定できます。 これにより、アップロード中にネットワーク接続が削除された場合に、転送を再開できます。
アップロード セッションを使用してファイルをアイテムに添付Outlook手順を次に示します。
アップロード セッションを作成します。
そのアップロード セッション内で、ファイルのすべてのバイトがアップロードされ、指定されたアイテムにファイルが添付されるまで、バイト範囲 (各回に最大 4 MB) を繰り返しアップロードします。
今後のアクセスのために添付ファイルの ID を保存します。
オプション: アップロード セッションを削除します。
例については、「大規模なファイルをメッセージOutlookイベントに添付する 」を参照してください。
ヒント
Exchange Online管理者は、メッセージの添付ファイルを含むMicrosoft 365メールボックスのメッセージ サイズ制限をカスタマイズできます。 既定では、このメッセージ サイズの制限は 35 MB です。 最大メッセージ サイズを カスタマイズして、 テナントの既定の制限より大きい添付ファイルをサポートする方法について確認します。
重要
共有メールボックスまたは委任 メールボックス内 のメッセージまたはイベントに大きなファイルを添付する場合は、既知の問題に注意してください。
アクセス許可
この API を呼び出すには、次のいずれかのアクセス許可が必要です。アクセス許可の選択方法などの詳細については、「アクセス許可 」を参照してください。
アクセス許可の種類
アクセス許可 (特権の小さいものから大きいものへ)
委任 (職場または学校のアカウント)
Calendars.ReadWrite, Mail.ReadWrite
委任 (個人用 Microsoft アカウント)
Calendars.ReadWrite, Mail.ReadWrite
Application
Calendars.ReadWrite, Mail.ReadWrite
HTTP 要求
ファイルをイベントに添付するアップロード セッションを作成するには、次の手順を実行 します 。
POST /me/events/{id}/attachments/createUploadSession
POST /users/{id | userPrincipalName}/events/{id}/attachments/createUploadSession
ファイルをメッセージに添付するアップロード セッションを作成するには、次の手順を実行 します 。
POST /me/messages/{id}/attachments/createUploadSession
POST /users/{id | userPrincipalName}/messages/{id}/attachments/createUploadSession
名前
説明
Authorization
ベアラー {トークン}
要求本文
要求本文で、次のパラメーターを含む JSON オブジェクトを指定します。
パラメーター
種類
説明
AttachmentItem
attachmentItem
アップロードおよび添付するアイテムの属性を表します。 少なくとも、添付ファイルの種類 (file)、名前、ファイルのサイズを指定します。
応答
成功した場合、このメソッドは応答コード 201 Created と、応答本文の新しい uploadSession オブジェクトを返します。
注 :
uploadSession 応答オブジェクトの一部として返される uploadUrl プロパティは、ファイルのバイト範囲をアップロードする後続のクエリの不透明な URL PUT です。 このトークンには、 PUT expirationDateTime によって期限切れになる後続のクエリに適した 認証トークンが含まれます 。 この URL はカスタマイズしない。
nextExpectedRanges プロパティは、次にアップロードするファイル バイトの場所を指定します。たとえば、 を指定します"NextExpectedRanges":["2097152"]。 ファイル内のバイトを順番にアップロードする必要があります。
例
例 1: 下書きメッセージに大きな添付ファイルを追加するアップロード セッションを作成する
次の例は、指定したメッセージに対する後続のファイルアップロード操作で使用できるアップロード セッションを作成する方法を示しています。
要求
POST https://graph.microsoft.com/v1.0/me/messages/AAMkADI5MAAIT3drCAAA=/attachments/createUploadSession
Content-type: application/json
{
"AttachmentItem": {
"attachmentType": "file",
"name": "flower",
"size": 3483322
}
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var attachmentItem = new AttachmentItem
{
AttachmentType = AttachmentType.File,
Name = "flower",
Size = 3483322
};
await graphClient.Me.Messages["{message-id}"].Attachments
.CreateUploadSession(attachmentItem)
.Request()
.PostAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
const options = {
authProvider,
};
const client = Client.init(options);
const uploadSession = {
AttachmentItem: {
attachmentType: 'file',
name: 'flower',
size: 3483322
}
};
await client.api('/me/messages/AAMkADI5MAAIT3drCAAA=/attachments/createUploadSession')
.post(uploadSession);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/me/messages/AAMkADI5MAAIT3drCAAA=/attachments/createUploadSession"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *payloadDictionary = [[NSMutableDictionary alloc] init];
MSGraphAttachmentItem *attachmentItem = [[MSGraphAttachmentItem alloc] init];
[attachmentItem setAttachmentType: [MSGraphAttachmentType file]];
[attachmentItem setName:@"flower"];
[attachmentItem setSize: 3483322];
payloadDictionary[@"AttachmentItem"] = attachmentItem;
NSData *data = [NSJSONSerialization dataWithJSONObject:payloadDictionary options:kNilOptions error:&error];
[urlRequest setHTTPBody:data];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
AttachmentItem attachmentItem = new AttachmentItem();
attachmentItem.attachmentType = AttachmentType.FILE;
attachmentItem.name = "flower";
attachmentItem.size = 3483322L;
graphClient.me().messages("AAMkADI5MAAIT3drCAAA=").attachments()
.createUploadSession(AttachmentCreateUploadSessionParameterSet
.newBuilder()
.withAttachmentItem(attachmentItem)
.build())
.buildRequest()
.post();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.NewAttachmentItemRequestBody()
attachmentItem := msgraphsdk.NewAttachmentItem()
requestBody.SetAttachmentItem(attachmentItem)
attachmentType := "file"
attachmentItem.SetAttachmentType(&attachmentType)
name := "flower"
attachmentItem.SetName(&name)
size := int64(3483322)
attachmentItem.SetSize(&size)
messageId := "message-id"
result, err := graphClient.Me().MessagesById(&messageId).Attachments().CreateUploadSession(message-id).Post(requestBody)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
Import-Module Microsoft.Graph.Users.Actions
$params = @{
AttachmentItem = @{
AttachmentType = "file"
Name = "flower"
Size = 3483322
}
}
# A UPN can also be used as -UserId.
New-MgUserMessageAttachmentUploadSession -UserId $userId -MessageId $messageId -BodyParameter $params
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
応答
注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.uploadSession",
"uploadUrl": "https://outlook.office.com/api/v1.0/Users('a8e8e219-4931-95c1-b73d-62626fd79c32@72aa88bf-76f0-494f-91ab-2d7cd730db47')/Messages('AAMkADI5MAAIT3drCAAA=')/AttachmentSessions('AAMkADI5MAAIT3k0uAAA=')?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IktmYUNIUlN6bllHMmNI",
"expirationDateTime": "2019-09-25T01:09:30.7671707Z",
"nextExpectedRanges": [
"0-"
]
}
例 2: 大きな行内添付ファイルを下書きメッセージに追加するアップロード セッションを作成する
次の例は、大きなインライン添付ファイルを下書きメッセージに追加するために使用できるアップロード セッションを作成する方法を示しています。
インライン添付ファイルの場合は、 isInline プロパティ true を contentId プロパティに設定し、 contentId プロパティを使用して、以下に示すように添付ファイルの CID を指定します。 下書きメッセージの本文で、同じ CID 値を使用して、たとえば CID HTML 参照タグを使用して添付ファイルを含める位置を示します <img src="cid:my_inline_picture">。 ファイルを正常にアップロードすると、レンダリングされたメッセージには、指定した場所のメッセージ本文の一部として添付ファイルが含まれます。
要求
POST https://graph.microsoft.com/v1.0/me/messages/AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=/attachments/createUploadSession
Content-type: application/json
{
"AttachmentItem": {
"attachmentType": "file",
"name": "scenary",
"size": 7208534,
"isInline": true,
"contentId": "my_inline_picture"
}
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var attachmentItem = new AttachmentItem
{
AttachmentType = AttachmentType.File,
Name = "scenary",
Size = 7208534,
IsInline = true,
ContentId = "my_inline_picture"
};
await graphClient.Me.Messages["{message-id}"].Attachments
.CreateUploadSession(attachmentItem)
.Request()
.PostAsync();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
const options = {
authProvider,
};
const client = Client.init(options);
const uploadSession = {
AttachmentItem: {
attachmentType: 'file',
name: 'scenary',
size: 7208534,
isInline: true,
contentId: 'my_inline_picture'
}
};
await client.api('/me/messages/AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=/attachments/createUploadSession')
.post(uploadSession);
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/me/messages/AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=/attachments/createUploadSession"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *payloadDictionary = [[NSMutableDictionary alloc] init];
MSGraphAttachmentItem *attachmentItem = [[MSGraphAttachmentItem alloc] init];
[attachmentItem setAttachmentType: [MSGraphAttachmentType file]];
[attachmentItem setName:@"scenary"];
[attachmentItem setSize: 7208534];
[attachmentItem setIsInline: true];
[attachmentItem setContentId:@"my_inline_picture"];
payloadDictionary[@"AttachmentItem"] = attachmentItem;
NSData *data = [NSJSONSerialization dataWithJSONObject:payloadDictionary options:kNilOptions error:&error];
[urlRequest setHTTPBody:data];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
AttachmentItem attachmentItem = new AttachmentItem();
attachmentItem.attachmentType = AttachmentType.FILE;
attachmentItem.name = "scenary";
attachmentItem.size = 7208534L;
attachmentItem.isInline = true;
attachmentItem.contentId = "my_inline_picture";
graphClient.me().messages("AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=").attachments()
.createUploadSession(AttachmentCreateUploadSessionParameterSet
.newBuilder()
.withAttachmentItem(attachmentItem)
.build())
.buildRequest()
.post();
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.NewAttachmentItemRequestBody()
attachmentItem := msgraphsdk.NewAttachmentItem()
requestBody.SetAttachmentItem(attachmentItem)
attachmentType := "file"
attachmentItem.SetAttachmentType(&attachmentType)
name := "scenary"
attachmentItem.SetName(&name)
size := int64(7208534)
attachmentItem.SetSize(&size)
isInline := true
attachmentItem.SetIsInline(&isInline)
contentId := "my_inline_picture"
attachmentItem.SetContentId(&contentId)
messageId := "message-id"
result, err := graphClient.Me().MessagesById(&messageId).Attachments().CreateUploadSession(message-id).Post(requestBody)
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
Import-Module Microsoft.Graph.Users.Actions
$params = @{
AttachmentItem = @{
AttachmentType = "file"
Name = "scenary"
Size = 7208534
IsInline = $true
ContentId = "my_inline_picture"
}
}
# A UPN can also be used as -UserId.
New-MgUserMessageAttachmentUploadSession -UserId $userId -MessageId $messageId -BodyParameter $params
SDK をプロジェクトに追加し、authProvider インスタンスを作成する 方法の詳細については、SDK のドキュメントを参照してください 。
応答
注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.uploadSession",
"uploadUrl": "https://outlook.office.com/api/gv1.0/users('a8e8e219-4931-95c1-b73d-62626fd79c32@72aa88bf-76f0-494f-91ab-2d7cd730db47')/messages('AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=')/AttachmentSessions('AAMkAGUwNjQ4ZjIxLTAAA=')?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IjFTeXQ1bXdXYVh5UFJ",
"expirationDateTime": "2021-12-27T14:20:12.9708933Z",
"nextExpectedRanges": [
"0-"
]
}