如果你使用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

递归上传文件和文件夹至SharePoint相关推荐

  1. python ftp文件夹文件递归上传推送

    python ftp文件夹文件递归上传推送 posted on 2018-10-16 17:05 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnbl ...

  2. Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器

    Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...

  3. php ftp 创建文件夹失败,phpftp上传多个文件时失败

    遍历文件夹,打算批量上传到FTP上,li下有 dir和 files两个数组,一个是目录数组,一个文件数组 用ftp上传时失败,单个上传没有问题??? 怎么解决啊 foreach ($li['files ...

  4. 云服务器上传文件到哪个文件夹,云服务器上传到那个文件夹

    云服务器上传到那个文件夹 内容精选 换一换 Model File:模型文件.单击右侧的文件夹图标,在后台服务器sample所在路径(工程目录/run/out/test_data/model)选择需要转 ...

  5. 如何在Linux中使用sFTP上传或下载文件与文件夹

    如何在Linux中使用sFTP上传或下载文件与文件夹 sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全;它通过 ...

  6. 文件上传时判断文件夹是否存在

    文件上传时判断文件夹是否存在 if($path!=''){ $path = C('UPLOAD_IMAGE_PATH').$path.'/';//上传路径 }else{ $path = C('UPLO ...

  7. 码云上传本地文件夹,码云只能上传20个文件的突破方法

    码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...

  8. 码云上传文件夹_码云上传本地文件夹,码云只能上传20个文件的突破方法

    码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...

  9. lftp上传和下载文件夹

    lftp上传和下载文件夹 lftp是一个很稳定很好用的命令行ftp工具.get命令用来下载文件,却无法下载文件夹.如果要上传和下载文件夹,就要用到mirror命令了. 简单示例: 下载:mirror ...

最新文章

  1. 登录功能(token)
  2. 嵌入式编程与c语言有何区别,有的嵌入式设备也提供C++编译器,那还有理由坚持使用C语言吗?...
  3. 使用C#获取IP地址方法
  4. 蒙特卡洛能解决啥_用蒙特卡洛方法解决“无法解决”的问题
  5. 雷林鹏分享:jQuery EasyUI 拖放 - 基本的拖动和放置
  6. idea ---- 快捷键
  7. 中移互联网副总:创新技术如何赋能企业变现突破
  8. 为什么TCP连接不可靠
  9. iNode客户端安装
  10. 简述计算机配件选购的一般原则和流程,计算机维护与维修教学全套课件(刘云霞)(已检查完11 18)教学单元五选购与配置计算机.doc...
  11. 【C语言练习——打印上三角及其变形】
  12. 0-1背包问题和部分背包(fractional knapsack)问题分析(动态规划,贪心算法)
  13. np.isfinite_带有Python示例的math.isfinite()方法
  14. select 函数用法
  15. Word中下划线自动换行版式不…
  16. Design a Facebook NewsFeed
  17. 计算机学院开学标语,新学期开学宣传标语大全
  18. python matplotlib 地图_Python数据可视化,看这篇就够了
  19. 面试中关于Redis的问题
  20. 大学生日记 我走出了农村 却永远走不进城市

热门文章

  1. 快速查找所有存储过程/触发器中是否包含某个字符串
  2. python之路-day19-面向对象之约束
  3. Python基础(1)
  4. 腾讯下一个重点:硬件;硬件自身的未来也正进入多元化发展
  5. xe7 Unresolved external CSPIN.OBJ
  6. Spring学习笔记(三) AOP_annotation,AOP_XML
  7. 制作iPhone App demo video
  8. 最近学的用javascript给datagrid排序
  9. 弹性地基梁板法计算原理_地基下沉别慌张!沉着冷静用对地基加固法
  10. localdatetime 默认时间_为什么建议使用你 LocalDateTime ,而不是 Date?