递归上传文件和文件夹至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
递归上传文件和文件夹至SharePoint相关推荐
- python ftp文件夹文件递归上传推送
python ftp文件夹文件递归上传推送 posted on 2018-10-16 17:05 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnbl ...
- Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器
Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...
- php ftp 创建文件夹失败,phpftp上传多个文件时失败
遍历文件夹,打算批量上传到FTP上,li下有 dir和 files两个数组,一个是目录数组,一个文件数组 用ftp上传时失败,单个上传没有问题??? 怎么解决啊 foreach ($li['files ...
- 云服务器上传文件到哪个文件夹,云服务器上传到那个文件夹
云服务器上传到那个文件夹 内容精选 换一换 Model File:模型文件.单击右侧的文件夹图标,在后台服务器sample所在路径(工程目录/run/out/test_data/model)选择需要转 ...
- 如何在Linux中使用sFTP上传或下载文件与文件夹
如何在Linux中使用sFTP上传或下载文件与文件夹 sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全;它通过 ...
- 文件上传时判断文件夹是否存在
文件上传时判断文件夹是否存在 if($path!=''){ $path = C('UPLOAD_IMAGE_PATH').$path.'/';//上传路径 }else{ $path = C('UPLO ...
- 码云上传本地文件夹,码云只能上传20个文件的突破方法
码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...
- 码云上传文件夹_码云上传本地文件夹,码云只能上传20个文件的突破方法
码云官方地址:https://gitee.com/ 很多人不知道码云上传本地文件夹怎么操作,或者如何突破码云只能上传20个文件限制的问题,今天就来说说这事的方法吧. 简介: 码云是媲美GitHub的代 ...
- lftp上传和下载文件夹
lftp上传和下载文件夹 lftp是一个很稳定很好用的命令行ftp工具.get命令用来下载文件,却无法下载文件夹.如果要上传和下载文件夹,就要用到mirror命令了. 简单示例: 下载:mirror ...
最新文章
- 登录功能(token)
- 嵌入式编程与c语言有何区别,有的嵌入式设备也提供C++编译器,那还有理由坚持使用C语言吗?...
- 使用C#获取IP地址方法
- 蒙特卡洛能解决啥_用蒙特卡洛方法解决“无法解决”的问题
- 雷林鹏分享:jQuery EasyUI 拖放 - 基本的拖动和放置
- idea ---- 快捷键
- 中移互联网副总:创新技术如何赋能企业变现突破
- 为什么TCP连接不可靠
- iNode客户端安装
- 简述计算机配件选购的一般原则和流程,计算机维护与维修教学全套课件(刘云霞)(已检查完11 18)教学单元五选购与配置计算机.doc...
- 【C语言练习——打印上三角及其变形】
- 0-1背包问题和部分背包(fractional knapsack)问题分析(动态规划,贪心算法)
- np.isfinite_带有Python示例的math.isfinite()方法
- select 函数用法
- Word中下划线自动换行版式不…
- Design a Facebook NewsFeed
- 计算机学院开学标语,新学期开学宣传标语大全
- python matplotlib 地图_Python数据可视化,看这篇就够了
- 面试中关于Redis的问题
- 大学生日记 我走出了农村 却永远走不进城市
热门文章
- 快速查找所有存储过程/触发器中是否包含某个字符串
- python之路-day19-面向对象之约束
- Python基础(1)
- 腾讯下一个重点:硬件;硬件自身的未来也正进入多元化发展
- xe7 Unresolved external CSPIN.OBJ
- Spring学习笔记(三) AOP_annotation,AOP_XML
- 制作iPhone App demo video
- 最近学的用javascript给datagrid排序
- 弹性地基梁板法计算原理_地基下沉别慌张!沉着冷静用对地基加固法
- localdatetime 默认时间_为什么建议使用你 LocalDateTime ,而不是 Date?