저는 C# 클라이언트 라이브러리를 사용하고 있습니다.microsoft-graph를 통해 공유에 업로드하기 전에 파일에 필드 정보를 추가하십시오.
파일을 업로드 할 때 해당 파일에 대한 필드 (SharePoint 열) 중 하나를 설정하려고합니다. 나는이
var newfile = await gClient
.Sites[mySIteId]
.Drives[myDriveId]
.Items[mySubFolderId]
.ItemWithPath("newFile.txt")
.Content
.Request()
.PutAsync<DriveItem>(fs);
var li = await gClient
.Sites[mySIteId]
.Drives[myDriveId]
.Items[newifle.Id]
.ListItem
.Request()
.GetAsync();
li.Fields.AdditionalData.Add("Title", "My New File Title");
await gClient
.Sites[mySIteId]
.Drives[myDriveId]
.Items[newifle.Id]
.ListItem
.Request()
.UpdateAsync(li);
처럼 PutAsync<DriveItem>(filestream)
에 대한 호출 후 반환되는 DriveItem.ListItem
에서 FieldValueSet
를 업데이트 시도했다 그러나 나는이 예외 얻을 :
ServiceException 필드 'ID가'인식되지 않습니다
을
위의 경우 API를 3 번 호출해야하지만 한 번의 호출로 파일을 업로드 할 때 필드를 추가 할 수 없습니다. 요청에 따라
업데이트 정보 -
난 단지 1 필드를 설정하려고하면 다음 'ID는'여전히 JSON에 나타납니다. 여기에 실제 코드와 '청소'JSON은
var fs = new FileStream(@"c:\temp\TestImage.jpg", FileMode.Open);
var newfile = await gClient.Sites[SPSiteId]
.Drives[LibraryId]
.Root
.ItemWithPath("TestImage.jpg")
.Content
.Request()
.PutAsync<DriveItem>(fs);
var li = await gClient.Sites[SPSiteId]
.Drives[LibraryId]
.Items[newifle.Id]
.ListItem
.Request()
.GetAsync();
var d = new Dictionary<string, object>();
d.Add("Title", "This should be the title");
li.Fields.AdditionalData = d;
await gClient.Sites[SPSiteId]
.Drives[LibraryId]
.Items[newifle.Id]
.ListItem.Request()
.UpdateAsync(li);
퍼스트 콜 :
PUT /v1.0/sites/xxxxxx.sharepoint.com,af844170-6c96-448b-bb75-b1144fa09f3c,d3904f65-6367-4071-9201-e96ea7c3c5d7/drives/b!cEGEr5Zsi0S7dbEUT6CfPGVPkNNnY3FAkgHpbqfDxdeiLjGMWnChSroudPhjGXRg/root:/TestImage.jpg:/content HTTP/1.1
두 번째 전화 :
GET /v1.0/sites/xxxxxx.sharepoint.com,af844170-6c96-448b-bb75-b1144fa09f3c,d3904f65-6367-4071-9201-e96ea7c3c5d7/drives/b!cEGEr5Zsi0S7dbEUT6CfPGVPkNNnY3FAkgHpbqfDxdeiLjGMWnChSroudPhjGXRg/items/01QX3GBJL3RSNVFPDYGBG2FKKARXI7TSBV/listItem HTTP/1.1
세 번째 호출 (응답 HTTP 400 Bad Request
입니다) :
PATCH /v1.0/sites/xxxxx.sharepoint.com,af844170-6c96-448b-bb75-b1144fa09f3c,d3904f65-6367-4071-9201-e96ea7c3c5d7/drives/b!cEGEr5Zsi0S7dbEUT6CfPGVPkNNnY3FAkgHpbqfDxdeiLjGMWnChSroudPhjGXRg/items/01QX3GBJL3RSNVFPDYGBG2FKKARXI7TSBV/listItem HTTP/1.1
시도해 보았습니다. 새 사전을 만든 다음 내 단일 필드를 추가했습니다. 그런 다음 사전을'ListItem.Fields.AdditionalData'로 설정합니다. 그러나 동일한 오류로 실패하고 Fiddler에서 JSON에 'id'필드가 추가되었는지 검사합니다. – OrdinaryOrange
Fiddler를 사용하여 캡처 한 요청과 응답을 추가 할 수 있습니까? 요청을 생성 한 클라이언트 라이브러리 호출을 포함시킵니다. –