c# - 使用 FrontPage RPC 上传到 Sharepoint

标签 c# sharepoint-2007 moss rpc file-upload

我正在尝试使用 RPC 方法将文档及其元数据上传到共享点。
好吧,它工作正常,除了某些类型的文件,如 docx、xlsx..
我没有收到任何错误或异常,它们(docx、xlsx。)已正确上传到共享点,但没有关联的元数据。

我该如何解决这个问题?

下面是我用来上传元数据的代码:

 private static bool Upload(string webUrl, string documentName, byte[] bytes, Dictionary<string, object> metaInfo, NetworkCredential netAccess, out string result)
    {
        string putOption = "overwrite,createdir,migrationsemantics";  // see http://msdn2.microsoft.com/en-us/library/ms455325.aspx
        string comment = null;
        bool keepCheckedOut = false;
        string method = "method=put+document%3a12.0.4518.1016&service_name=%2f&document=[document_name={0};meta_info=[{1}]]&put_option={2}&comment={3}&keep_checked_out={4}\n";
        method = String.Format(method, documentName, EncodeMetaInfo(metaInfo), putOption, HttpUtility.UrlEncode(comment), keepCheckedOut.ToString().ToLower());
        List<byte> data = new List<byte>();
        data.AddRange(Encoding.UTF8.GetBytes(method));
        data.AddRange(bytes);

       try
        {
            using (WebClient webClient = new WebClient())
            {
                webClient.Credentials = netAccess;
                webClient.Headers.Add("Content-Type", "application/x-vermeer-urlencoded");
                webClient.Headers.Add("X-Vermeer-Content-Type", "application/x-vermeer-urlencoded");
                result = Encoding.UTF8.GetString(webClient.UploadData(webUrl + "/_vti_bin/_vti_aut/author.dll", "POST", data.ToArray()));
                if (result.IndexOf("\n<p>message=successfully") < 0)
                    throw new Exception(result);
            }
        }
        catch (Exception ex)
        {
            result = ex.Message;
            return false;
        }
        return true;
    }

最佳答案

这是旧的,但由于 SharePoint 中的属性提升,未为办公文件设置元数据。 如果您拥有自己的网络服务,则可以在添加文档时禁用它。 要使用 FrontPage rpc,只需在第一次“PUT”-mthode 调用后再次设置元数据,您将获得另一个版本,但第二次应用元数据。

关于c# - 使用 FrontPage RPC 上传到 Sharepoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377620/

相关文章:

c# - Xamarin 使用SQLite 组件。无法在屏幕上查看已保存的项目

C# OpenFileDialog 线程启动但未显示对话框

java - 我可以在 Sharepoint 2007 中添加 Java portlet 吗?

powershell - 在 Sharepoint 中使用 PowerShell 将 "Hyperlink"项类型添加到列表

c# - SqlParameter(string, object) 无法处理常量值

c# - 如何以编程方式确定 SharePoint 列表的大小

sharepoint - 关于 MOSS 或 WSS 3.0,API 的哪些部分可能实现得更好?

SharePoint 和 Firefox 3

使用 SiteData Webservice 进行爬网时的 Sharepoint 文档唯一标识符

c# - 如何判断 DataGrid 的哪一行被单击?