Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MS graph API:设置driveitem c的自定义标记(列)#_C#_Sharepoint_Microsoft Graph Api - Fatal编程技术网

C# MS graph API:设置driveitem c的自定义标记(列)#

C# MS graph API:设置driveitem c的自定义标记(列)#,c#,sharepoint,microsoft-graph-api,C#,Sharepoint,Microsoft Graph Api,我使用ms graph将文件上载到文档库中。 我已经为大文件实现了一个代码,它可以正常工作 但我不知道如何设置“驱动器”的自定义列 这是我的密码。我已经玩了额外的数据,但我没有成功 有什么想法吗 谢谢 public static async Task<DriveItem> uploadFile() { Stream fileStream = new FileStream(@"C:\prueba\prueba2.xlsx

我使用ms graph将文件上载到文档库中。 我已经为大文件实现了一个代码,它可以正常工作 但我不知道如何设置“驱动器”的自定义列

这是我的密码。我已经玩了额外的数据,但我没有成功

有什么想法吗

谢谢

     public static async Task<DriveItem> uploadFile()
            {
                Stream fileStream = new FileStream(@"C:\prueba\prueba2.xlsx", FileMode.Open);
                DriveItem uploadedFile = null;
                UploadSession uploadSession = null;

    uploadSession = await objGraphServiceClient.Sites["SITE_ID"].Lists["LIST-ID"].Drive.Root.ItemWithPath("EISE_PRUEBA2.xlsx").CreateUploadSession().Request().PostAsync();

 if (uploadSession != null)
            {
                // Chunk size must be divisible by 320KiB, our chunk size will be slightly more than 1MB 
                int maxSizeChunk = (320 * 1024 * 10) * 4;
                ChunkedUploadProvider uploadProvider = new ChunkedUploadProvider(uploadSession, objGraphServiceClient, fileStream, maxSizeChunk);
                var chunkRequests = uploadProvider.GetUploadChunkRequests();
                var exceptions = new List<Exception>();
                var readBuffer = new byte[maxSizeChunk];

                foreach (var request in chunkRequests)
                {


                       var result = await uploadProvider.GetChunkRequestResponseAsync(request, readBuffer, exceptions);



                    if (result.UploadSucceeded)
                    {
                        uploadedFile = result.ItemResponse;

                        var uno = uploadedFile.AdditionalData;

                        var add = new Dictionary<string, object>();

                        add.Add("PositionCode", "Pos-01-" + DateTime.Now.ToString("mmmm"));
                        add.Add("Category", "Category_" + DateTime.Now.ToString("mmmm"));

                        var temp = new ListItem();
                        temp.Id = uploadedFile.Id;
                        temp.Fields = new FieldValueSet();
                        temp.Fields.AdditionalData = add;


                        var driveItem = new DriveItem();

                        //var users = await objGraphServiceClient.Users.Request().GetAsync();

                        //    var driveItem = new DriveItem
                        //    {
                        //        Name = "new-file-name.xlsx"

                        //    };
                        //    //driveItem.CreatedByUser = users.First();
                        //    driveItem.AdditionalData =  new Dictionary<string, object>();

                        //    driveItem.AdditionalData.Add(new KeyValuePair<string, object>("@odata.category", "Category" + DateTime.Now.ToString("mmmm")));
                        //    driveItem.AdditionalData.Add(new KeyValuePair<string, object>("@odata.PositionCode", "Pos-01-" + DateTime.Now.ToString("mmmm")));


                        // var updatedItem = await objGraphServiceClient.Sites["hispaniaassetmanagement.sharepoint.com,d04053f4-eb19-4ed8-9785-0f7aa2a908c8,6227bfe6-c7cb-4990-8f51-0a7fd8c28c1b"].Lists["67987e61-86cc-4f3e-93f2-0b6699b97a94"].Drive.Items[uploadedFile.Id].Request().UpdateAsync(driveItem);
                        //objGraphServiceClient.Sites["hispaniaassetmanagement.sharepoint.com,d04053f4-eb19-4ed8-9785-0f7aa2a908c8,6227bfe6-c7cb-4990-8f51-0a7fd8c28c1b"].Lists["67987e61-86cc-4f3e-93f2-0b6699b97a94"].Drive.Items["017ZCPK2DMW4ZEXUK7QZHJ7CQLPY7GHDFJ"]

                        uploadedFile.ListItem.Fields.AdditionalData = add;

                        var updatedItem = await objGraphServiceClient.Sites["SITE-ID"].Lists["LIST-ID"].Drive.List.Items[uploadedFile.Id].Request().UpdateAsync(uploadedFile.ListItem);
                    }
                }
            }
            return (uploadedFile);
        }
公共静态异步任务上载文件()
{
Stream fileStream=new fileStream(@“C:\prueba\prueba2.xlsx”,FileMode.Open);
DriveItem uploadedFile=null;
UploadSession UploadSession=null;
uploadSession=Wait objGraphServiceClient.Sites[“SITE_ID”]。Lists[“LIST-ID”]。Drive.Root.ItemWithPath(“EISE_PRUEBA2.xlsx”)。CreateUploadSession().Request().PostAsync();
if(上传会话!=null)
{
//块大小必须可以被320KiB整除,我们的块大小将略大于1MB
int-maxSizeChunk=(320*1024*10)*4;
ChunkedUploadProvider uploadProvider=新的ChunkedUploadProvider(uploadSession、objGraphServiceClient、fileStream、maxSizeChunk);
var chunkRequests=uploadProvider.GetUploadChunkRequests();
var exceptions=新列表();
var readBuffer=新字节[maxSizeChunk];
foreach(chunkRequests中的var请求)
{
var result=await uploadProvider.GetChunkRequestResponseAsync(请求、读取缓冲区、异常);
if(result.uploadsuccessed)
{
uploadedFile=result.ItemResponse;
var uno=uploadedFile.AdditionalData;
var add=新字典();
add.add(“PositionCode”,“Pos-01-”+DateTime.Now.ToString(“mmmm”));
add.add(“Category”,“Category_u”+DateTime.Now.ToString(“mmmm”));
var temp=新列表项();
temp.Id=uploadedFile.Id;
临时字段=新字段值集();
temp.Fields.AdditionalData=添加;
var driveItem=新的driveItem();
//var users=await objGraphServiceClient.users.Request().GetAsync();
//var driveItem=新的driveItem
//    {
//Name=“新文件名.xlsx”
//    };
////driveItem.CreatedByUser=users.First();
//driveItem.AdditionalData=新字典();
//AdditionalData.Add(新的KeyValuePair(“@odata.category”,“category”+DateTime.Now.ToString(“mmmm”));
//driveItem.AdditionalData.Add(新的键值对(“@odata.PositionCode”,“Pos-01-”+DateTime.Now.ToString(“mmmm”));
//var updateItem=wait objGraphServiceClient.Sites[“hispaniaassetmanagement.sharepoint.com,d04053f4-eb19-4ed8-9785-0f7aa2a908c86227bfe6-c7cb-4990-8f51-0a7fd8c28c1b]”。列表[“67987e61-86cc-4f3e-93f2-0b6699b97a94]”。驱动器。项目[uploadedFile.Id]。请求()。更新同步(项目驱动程序);
//objGraphServiceClient.Sites[“hispaniaassetmanagement.sharepoint.com,d04053f4-eb19-4ed8-9785-0F7AA2A908C86227BFE6-c7cb-4990-8f51-0a7fd8c28c1b]”。列表[“67987e61-86cc-4f3e-93f2-0b6699b97a94]”。驱动器。项目[“017ZCPK2DMW4ZEXUK7QZHJ7CQLPY7GHDFJ”]
uploadedFile.ListItem.Fields.AdditionalData=add;
var updateItem=wait objGraphServiceClient.Sites[“SITE-ID”]。Lists[“LIST-ID”]。Drive.LIST.Items[uploadedFile.ID]。Request().updateSync(uploadedFile.ListItem);
}
}
}
返回(上传文件);
}

我在SDK中找到了使用RESTAPI的解决方案。 使用图形浏览器将是:

修补程序:{siteID}/lists/{ListId}/items/{ItemId}/fields

内容类型:application/json

{ “自定义列”:“值” }


但是!!!如果您想要更新上传文件的文件,该文件返回一个驱动器项,那么解决方案是

 var result = await uploadProvider.GetChunkRequestResponseAsync(request, readBuffer, exceptions);

                if (result.UploadSucceeded)
                {
                    uploadedFile = result.ItemResponse;

                    string webApiUrl = "https://graph.microsoft.com/v1.0/sites/"+ siteIDDMS + "/drives/"+driveIDHAMSLib+"/items/"+uploadedFile.Id+"/listItem/fields";

                    JObject paramsJson = new JObject()
                    {
                        ["Category"] = "NewCat_" + DateTime.Now.ToString("mmmm")                            
                    };

                    await RunRestApi(webApiUrl, accessToken, paramsJson,"PATCH", Display);

                }

顺便说一下。。。有人知道使用SDK是否可以实现这一点吗?

我在SDK中使用rest API找到了解决方案。 使用图形浏览器将是:

修补程序:{siteID}/lists/{ListId}/items/{ItemId}/fields

内容类型:application/json

{ “自定义列”:“值” }


但是!!!如果您想要更新上传文件的文件,该文件返回一个驱动器项,那么解决方案是

 var result = await uploadProvider.GetChunkRequestResponseAsync(request, readBuffer, exceptions);

                if (result.UploadSucceeded)
                {
                    uploadedFile = result.ItemResponse;

                    string webApiUrl = "https://graph.microsoft.com/v1.0/sites/"+ siteIDDMS + "/drives/"+driveIDHAMSLib+"/items/"+uploadedFile.Id+"/listItem/fields";

                    JObject paramsJson = new JObject()
                    {
                        ["Category"] = "NewCat_" + DateTime.Now.ToString("mmmm")                            
                    };

                    await RunRestApi(webApiUrl, accessToken, paramsJson,"PATCH", Display);

                }

顺便说一下。。。有人知道使用SDK是否可以实现这一点吗?

我不确定“设置“驱动器”的自定义列”是什么意思。您遇到了什么错误?抱歉,在documentLib中,我们创建了更多自定义列,如类别、子类别等。。。当我们使用MS graph库上传文档时,我不知道如何设置该值。谢谢,我不想把它们列出来。我想把它们放好。顺便说一下,如果你误解了,我正在使用MS图形。在文档库中,每个
DriveItem
都有一个关联的
ListItem
,该列表项保存其元数据(即自定义列)。这些必须使用单独的API调用作为不同的实体进行处理。我不确定“设置‘驱动器’的自定义列”是什么意思。您遇到了什么错误?抱歉,在documentLib中,我们创建了更多自定义列,如类别、子类别等。。。当我们使用MS graph库上传文档时,我不知道如何设置该值。谢谢,我不想把它们列出来。我想把它们放好。顺便说一下,如果你误解了,我正在使用MS图形。在文档库中,每个
DriveItem
都有一个关联的
ListItem
,该列表项保存其元数据(即自定义列)。必须使用单独的API调用将它们作为不同的实体进行处理。