microsoftgraph / msgraph-sdk-dotnet-core

The core Microsoft Graph client library for .Net. (Microsoft.Graph.Core)
Other
150 stars 48 forks source link

LargeFileUploadTask unable to upload taskFileAttachment #481

Open 1357310795 opened 2 years ago

1357310795 commented 2 years ago

Please provide the following (and please check them off the list with [x]) before submitting this issue:

Expected behavior

Use LargeFileUploadTask to upload a file to TodoTask Attachment.

public static AttachmentSession UploadAttachment(string tasklistid, string taskid, AttachmentInfo attachmentInfo, Stream ms)
{
    var attachmentsRequestBuilder = client.Me.Todo.Lists[$"{tasklistid}"].Tasks[$"{taskid}"].Attachments;
    var uploadSession = attachmentsRequestBuilder.CreateUploadSession(attachmentInfo).Request().PostAsync().Result;
    var task = new LargeFileUploadTask<AttachmentSession>(uploadSession, ms, 12 * 320 * 1024, client);
    var res = task.UploadAsync().Result;
    return res.ItemResponse;
}

As this document illustrates, first we need to create an upload session. Here's an example of returned uploadUrl

https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachmentSessions/AAMkADliMm=

Then we should use the upload session to upload (to /content)

PUT https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachmentSessions/AAMkADliMm=/content

But the LargeFileUploadTask creates a request with WRONG URL

PUT https://graph.microsoft.com/beta/users/6f9a2a92-8527-4d64-837e-b5312852f36d/todo/lists/AAMDiFkfh=/tasks/AAMkADliMm=/attachmentSessions/AAMkADliMm=

Actual behavior

The data is expected to be uploaded to /attachmentSessions/AAMkADliMm=/content but not /attachmentSessions/AAMkADliMm=

Steps to reproduce the behavior

As said above, use LargeFileUploadTask to upload a file to TodoTask Attachment.

Screenshots

image

20220819203938

image

1357310795 commented 2 years ago

https://docs.microsoft.com/en-us/graph/api/driveitem-createuploadsession?view=graph-rest-beta

The LargeFileUploadTask is designed for uploading DriveItems which does not need /content

Considering that the Attachments API has just arrived from beta to v1.0, no one may have thought to test the usability of LargeFileUploadTask...........😥

andrueastman commented 2 years ago

Thanks for raising this @1357310795,

Ideally the response from the API should have the correct URL returned for uploadUrl without need for further modification. This is the case for the other APIs like the ones below.

As this API looks to still be in beta, this may be an API bug/issue. We will raise this with the relevant API team and feedback if this is indeed the intended behaviour.