zoukankan      html  css  js  c++  java
  • 递归上传文件和文件夹至SharePoint

    如果你使用SharePoint 2010的话,可以直接“上传多个文件”。在弹出的对话框中可以直接往里拖放整个文件夹。如下图所示:

    如果是SharePoint 2007的话,可以通过“资源管理器”视图,像在资源管理器里管理本地文件一样,拖放文件夹。

    下面介绍的方式是下策。当然下下策就是你手工一个一个的建文件夹上传文件了。下策是你可以通过SharePoint对象模型或Web Services的方式编写一个递归程序来实现从本地文件夹到SharePoint库的上传工作。这里我们演示的是通过对象模型上传到一个SharePoint 2010站点。代码对于SharePoint 2007站点也是可用的。唯一的区别就是32位和64位,相应的.NET Framework版本和Microsoft.SharePoint.dll版本。

    Microsoft.SharePoint

    引用Microsoft.SharePoint.dll以便访问SharePoint对象模型。

    上传文档至文档库

    try
    {
    	localPath = txtLocalPath.Text; //本地路径
    	sharePointSite = txtServerURL.Text; //SharePoint 网站 URL.
    	documentLibraryName = txtLibrary.Text; // SharePoint文档库名称.
    
    	//获取你的SharePoint网站对象.
    	using (SPSite oSite = new SPSite(sharePointSite))
    	{
    		oWeb = oSite.OpenWeb();
    		CreateDirectories(localPath, oWeb.Folders[documentLibraryName].SubFolders);
    	}
    }
    catch (Exception ex)
    {
    	MessageBox.Show("Error:" + ex.Message );
    }
    

    CreateDirectories(string path,SPFolderCollection oFolderCollection)

    CreateDirectories方法是一个递归方法,接收两个参数。path参数指定本地计算机文件系统中的源位置;oFolderCollection参数指定目标文件夹集合。SPFolderCollection的用法参考这里

    private void CreateDirectories(string path, SPFolderCollection oFolderCollection)
    {
    	//上传多个文档
    	foreach (FileInfo oFI in new DirectoryInfo(path).GetFiles())
    	{
    		FileStream fileStream = File.OpenRead(oFI.FullName);
    		SPFile spfile = oFolderCollection.Folder.Files.Add(oFI.Name, fileStream, true);
    		spfile.Update();
    	}
    	
    	//上传多个文件夹
    	foreach (DirectoryInfo oDI in new DirectoryInfo(path).GetDirectories())
    	{
    		string sFolderName = oDI.FullName.Split('\\')[oDI.FullName.Split('\\').Length - 1];
    		SPFolder spNewFolder = oFolderCollection.Add(sFolderName);
    		spNewFolder.Update();
    		//递归调用以创建子文件夹
    		CreateDirectories(oDI.FullName, spNewFolder.SubFolders);
    	}
    }
    

    本地文件夹

    SharePoint文档库

    运行结果

    限制

    • 准备上传的文件的大小 不能超过2GB
    • 执行该代码的用户需要具备相应文档库的上传权限

    参考资料

    Uploading Files and Folders Recursively to a SharePoint Site

  • 相关阅读:
    Effective C++ -----条款29:为“异常安全”而努力是值得的
    Effective C++ -----条款28:避免返回handles指向对象内部成分
    Effective C++ -----条款27:尽量少做转型动作
    Effective C++ -----条款26:尽可能延后变量定义式的出现时间
    Effective C++ -----条款25:考虑写出一个不抛异常的swap函数
    Effective C++ -----条款24:若所有参数皆需类型转换,请为此采用non-member函数
    HGE 第一个程序
    Help him http://acm.hdu.edu.cn/showproblem.php?pid=5059
    C 语言实例
    C 语言实例
  • 原文地址:https://www.cnblogs.com/Sunmoonfire/p/1801915.html
Copyright © 2011-2022 走看看