c#上传文件到sharepoint(2个问题)

本文关键字:2个 问题 sharepoint 文件 | 更新日期: 2023-09-27 17:49:26

我创建了一个webservice,可以上传文件到我的sharepoint站点库。下面是我到目前为止的代码:

        [WebMethod]
        public string getLibraries(byte[] contents, String destUrl){
            String message = "1";
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                SPWeb site = new SPSite(destUrl).OpenWeb();
                site.AllowUnsafeUpdates = true;
                message = "2";
                EnsureParentFolder(site, destUrl);
                site.Files.Add(destUrl, contents);
                message = "3";
                site.AllowUnsafeUpdates = false;
            });
            return message;
        }

目前正在工作。但是在sharepoint中,你可以在库中添加新列。例如,如果您想添加文件的描述或其他内容。

我如何上传这些额外的列与文件?

我想弄清楚的另一件事是:现在它以"System account"的名义上传文件。我已经尝试将webservice的凭据设置为客户端应用程序的凭据,但它没有改变它。

如何将此更改为正在使用web服务的用户的登录名?

示例:myDomain/User1上传的文件

谢谢gen -

c#上传文件到sharepoint(2个问题)

        [WebMethod]
        public string getLibraries(byte[] contents, String destUrl, string description){
            String message = "1";
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                SPWeb site = new SPSite(destUrl).OpenWeb();
                site.AllowUnsafeUpdates = true;
                message = "2";
                EnsureParentFolder(site, destUrl);
                site.Files.Add(destUrl, contents);
                message = "3";
                SPListItem listItem = site.GetListItem(destUrl);
                listItem["Description"] = description;
                listItem.Update();
                site.AllowUnsafeUpdates = false;
            });
            return message;
        }

第二个问题的答案:

SPUserToken token = new SPSite(destUrl).RootWeb.EnsureUser(userName).UserToken;
SPWeb site = new SPSite(destUrl, token).OpenWeb();