通过webService下载sharepoint文档库文件

第一、基本原理:

1.通过对象模型得到SPItem.File得到文档库文件

2.通过WebService将item.File.OpenBinary()返回

3.将文件保存到服务器

4.从服务器下载到本地

第二、具体代码:

WebService

[WebMethod]
    public byte[]  GetAttachmentFileflow(string webPath,string list,int fileId)
    {
        try
        {
            using (SPSite site = new SPSite(webPath))
            {
                SPWeb web = site.OpenWeb();
                SPList lists = web.Lists[list];
                SPListItem item = lists.Items.GetItemById(fileId);
                return item.File.OpenBinary();
            }

        }
        catch (Exception)
        {
            return new byte[] { };
        }

    }

保存到服务器,下载的本地

protected void Page_Load(object sender, EventArgs e)
    {
        File.Delete(path);
        string webPath = "http://cntzmsw18:8099/";
        string list = "Shared Documents";
        localhost.Service server = new localhost.Service();
        byte[] b = server.GetAttachmentFileflow(webPath, list, 1594);//1594为文件ID通过SQL取得
        File.WriteAllBytes(path, b);
    }

    protected void BtnClick(object sender, EventArgs e)
    {
        FileStream fileStrem = new FileStream(path, FileMode.Open);
        long fileSize = fileStrem.Length;
        Context.Response.ContentType = "application/octet-stream";//设置报文
        Context.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("下载.docx", Encoding.UTF8));//下载文件名需要更改
        Context.Response.AddHeader("Content-Length", fileSize.ToString());
        byte[] fileBuffer = new byte[fileSize];
        fileStrem.Read(fileBuffer, 0, (int)fileSize);
        Context.Response.BinaryWrite(fileBuffer);
        fileStrem.Dispose();//释放资源
        Context.Response.End();
    }

第三、源码:

环境:vs2005 ,sp2007

注:服务器端对象模型

http://app.yinxiang.com/l/AAwg2HN1vt9HW78Q29c5fzexeu1Z-DbJh3c/

时间: 2024-10-12 09:10:25

通过webService下载sharepoint文档库文件的相关文章

[sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表

写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的地方 Rest API的简单应用 rest api方式实现对文档库的管理 通过WebClient模拟post上传文件到服务器 WebHttpRequest在sharepoint文档库中的使用 [sharepoint]Rest api相关知识(转) [sharepoint]根据用户名获取该用户的权限

CAML获取SharePoint文档库中除文件夹外所有文档

方法一: ? 1 2 3 4 <QueryOptions>         <ViewAttributes Scope="Recursive" />     </QueryOptions> </query> 方法二: ? 1 2 3 4 5 <View Scope="RecursiveAll">     <Query>         <Where>...</Where>

sharepoint 2013 获取文档库文件夹树形结构

sharepoint 2013 获取文档库文件夹树形结构 分类: sharepoint2013-07-15 06:40 5816人阅读 评论(0) 收藏 举报 在做sharepoint 2013或者sharepoint 2010文档库的过程中,经常会建很多的文件夹,不同类别存储不同文件,相当于文档的分类,这里主要是记录一下,将文档库的文件夹结构,绑定到treeview. protected  void  Page_Load(object sender,EventArgse) { if(!Page

查看SharePoint文档库是,显示层次目录,可以点击返回层次

在sharepoint 2013中,Documnet library(文档库)包含多层文件夹,当进入到文件夹后,返回指定层次了(例如返回上一层),需要用浏览器的返回. 使用起来不方便,而且浏览器的返回,会导致一些问题,不推荐普遍用户使用. 解决这个问题,可以做一个目录结构,实现方法是:访问Document library 时, url 有个参数[RootFolder],记录了路径. 主要对[RootFolder]参数进行处理. 这里使用webpart实现.当然,也可以Javascript方式实现

代码操作Sharepoint文档库(创建、上传附件)

代码操作Sharepoint文档库(创建.上传附件) 做项目中遇到客户需求,根据Infopath表单生成Excel并上传到Sharepoint指定文档库中 创建文档库 SPSite site = new SPSite(siteurl); SPListItem item = site.AllWebs["网站名"].Lists["列表名"].Folders.Add("文档库URL", SPFileSystemObjectType.Folder); i

[sharepoint]文档库,文件夹授权

写在前面 在项目中用到了文档库授权的方法,这里将查询到的方式总结一下. 涉及到的方法 在逻辑中用到的方法. /// <summary> /// 获取sharepoint站点角色定义 rest api /// </summary> /// <param name="hostWebUrl"></param> /// <param name="strAPI"></param> /// <para

解决SharePoint 文档库itemadded eventhandler导致的上传完成后,编辑页面保持报错的问题,错误信息为“该文档已经被编辑过 the file has been modified by...”

在文档库中添加itemadded 后,在上传文件后,会自动打开文档属性的编辑页面,在保存的时候就会报错,说这个文档已经被编辑过了.这是应为默认itemadded实践是异步执行的,会在edit页面打开之前就把属性更新完了,知道在保存的时候,属性不一致. 两种解决方法: 1: 使用item.sysupdate(false). 这个false参数非常重要. 2:将handler的执行变为非异步执行,编辑element.xml文件,如下红色部分: <Receiver><Name>AutoD

sharepoint文档库中日期显示详细日期,不显示几天前

文档库---库设置----栏

sharepoint rest api 创建文档库 文件夹

function createFolder() { var requestHeaders = { "Accept": "application/json;odata=verbose", "X-RequestDigest": $("#__REQUESTDIGEST").val(), "Content-Type": "application/json;odata=verbose" }; $.