在客户端 - 服务器应用程序中以编程方式将文件上载到SharePoint 2010中的文档库

时间:2014-01-13 05:27:49

标签: sharepoint sharepoint-2010

我使用下面的代码在SharePoint 2010库中上传文件

String fileToUpload = @"C:\YourFile.txt";
String sharePointSite = "http://yoursite.com/sites/Research/";
String documentLibraryName = "Shared Documents";

    using (SPSite oSite = new SPSite(sharePointSite))
    {
        using (SPWeb oWeb = oSite.OpenWeb())
        {
            if (!System.IO.File.Exists(fileToUpload))
                throw new FileNotFoundException("File not found.", fileToUpload);                    

            SPFolder myLibrary = oWeb.Folders[documentLibraryName];

            // Prepare to upload
            Boolean replaceExistingFiles = true;
            String fileName = System.IO.Path.GetFileName(fileToUpload);
            FileStream fileStream = File.OpenRead(fileToUpload);

            // Upload document
            SPFile spfile = myLibrary.Files.Add(fileName, fileStream, replaceExistingFiles);

            // Commit 
            myLibrary.Update();
        }
    }

这在我的机器上运行良好。但是,当我在服务器上部署它并使用下面的代码片段从我的机器上传库中的文件时,它会出错。它没有从本地(客户端)计算机获取文件位置(C:\ YourFile.txt)。

2 个答案:

答案 0 :(得分:1)

当您在服务器上运行时,您的代码在不同的帐户(apppool身份)下运行,该帐户无权读取C驱动器。

我不知道你为什么要从同一台服务器上读取和上传文件,看起来你只是测试Sharepoint对象模型然后就可以了

如果您希望其他应用或服务保留Sharepoint的更新文件,则应将其移至web目录,即\ wwwroot \ wss \ VirtualDirectories \ 80,然后使用您的代码读取和更新您的doc lib( myLibrary)正如你所做的那样。

答案 1 :(得分:0)

您是在控制台应用中运行此功能还是“在SharePoint中运行”?

可能是运行代码的帐户在C:\?

中没有读取权限