c# – 将文件复制到SharePoint中的文档库[已关闭]

我在SharePoint中有一个文档库.当一个新文件上传到该库时,我希望它能够自动复制到另一个文档库.我该怎么做?

解决方法

使用项目事件接收器并覆盖 ItemAdded事件. SPItemEventProperties将通过ListItem属性给出对列表项的引用.

有两种方法可以做到这一点(感谢您发现CopyTo).

方法1:使用CopyTo

方法将具有关联文件属性的任何列表项复制到同一网站集中的任何位置(可能还有其他Web应用程序,但我还没有测试).如果您查看项目的属性或使用其下拉菜单,SharePoint也会自动维护到源项目的链接.此链接可以用UnlinkFromCopySource删除.

CopyTo的唯一技巧是目标位置需要一个完整的URL.

public class EventReceiverTest : SPItemEventReceiver
{
    public override void ItemAdded(SPItemEventProperties properties)
    {
        properties.ListItem.CopyTo(
            properties.WebUrl + "/Destination/" + properties.ListItem.File.Name);
    }
}

方法2:流复制,手动设置属性

如果您需要更多地控制复制哪些项目属性或者需要更改文件内容,则此方法将是必需的.

public class EventReceiverTest : SPItemEventReceiver
{
    public override void ItemAdded(SPItemEventProperties properties)
    {
        SPFile sourceFile = properties.ListItem.File;
        SPFile destFile;

        // Copy file from source library to destination
        using (Stream stream = sourceFile.OpenBinaryStream())
        {
            SPDocumentLibrary destLib =
                (SPDocumentLibrary) properties.ListItem.Web.Lists["Destination"];
            destFile = destLib.RootFolder.Files.Add(sourceFile.Name,stream);
            stream.Close();
        }

        // Update item properties
        SPListItem destItem = destFile.Item;
        SPListItem sourceItem = sourceFile.Item;
        destItem["Title"] = sourceItem["Title"];
        //...
        //... destItem["FieldX"] = sourceItem["FieldX"];
        //...
        destItem.UpdateOverwriteVersion();
    }
}

部署

您也有各种部署选项.您可以将事件接收器与连接到内容类型或列表的功能相关联,并以编程方式添加它们.详见this article at SharePointDevWiki.

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...