在Web应用程序中获取Sharepoint服务器文档

时间:2011-09-21 11:52:56

标签: asp.net sharepoint-2003

我想在webapplication中获取sharepoint文档。这是我的代码。

try
    {
        string sharePointURL = "http://<ipAddress>:<port>/<websiteName>/default.aspx";
        SPSite site = new SPSite(sharePointURL); //Error on this line.....

        SPWeb web = site.OpenWeb();
        web.AllowUnsafeUpdates = true;

        string strContentType = "";
        // docLib is the name of document library
        SPFolder folder = web.GetFolder("docLib");

        SPFileCollection files = folder.Files;

        string fileName = "temp.xls";
        //"docLib" is name of document library and testFile.doc is the name of file
        string url = sharePointURL + "/" + "docLib" + "/" + fileName;

        SPFile tempFile = web.GetFile(url);

        //Get the extension of File.
        string[] fext = fileName.Split('.');
        byte[] obj = (byte[])tempFile.OpenBinary();
        // Get the extension of File to determine the file type
        string casestring = "";
        if (fext.Length > 1)
        {
            casestring = fext[fext.Length - 1];
        }
        //set the content type of file according to extension
        switch (casestring)
        {
            case "txt":
                strContentType = "text/plain";
                break;
            case "htm": strContentType = "text/html";
                break;
            case "html": strContentType = "text/html";
                break;
            case "rtf": strContentType = "text/richtext";
                break;
            case "jpg": strContentType = "image/jpeg";
                break;
            case "jpeg": strContentType = "image/jpeg";
                break;
            case "gif": strContentType = "image/gif";
                break;
            case "bmp": strContentType = "image/bmp";
                break;
            case "mpg": strContentType = "video/mpeg";
                break;
            case "mpeg": strContentType = "video/mpeg";
                break;
            case "avi": strContentType = "video/avi";
                break;
            case "pdf": strContentType = "application/pdf";
                break;
            case "doc": strContentType = "application/msword";
                break;
            case "dot": strContentType = "application/msword";
                break;
            case "csv": strContentType = "application/vnd.msexcel";
                break;
            case ".xls": strContentType = "application/vnd.msexcel";
                break;
            case ".xlt": strContentType = "application/vnd.msexcel";
                break;
            default: strContentType = "application/octet-stream";
                break;
        }
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AppendHeader("Content-Disposition",
                 "attachment; filename= " + fileName);
        Response.ContentType = strContentType;
        //Check that the client is connected and has 
        //not closed the connection after the request
        if (Response.IsClientConnected)
            Response.BinaryWrite(obj);
        Response.Flush();
        Response.Close();
    }
    catch (Exception ex)
    {
       string exMessage = ex.Message;
    }

我在这一行上收到错误:

SPSite site = new SPSite(sharePointURL);

错误信息是:
“无法找到[URL]上的Web应用程序。验证您是否正确输入了URL。如果URL应该提供现有内容,系统管理员可能需要添加新的请求URL映射到目标应用程序。”< / p>

请告诉我如何解决。

感谢。

1 个答案:

答案 0 :(得分:3)

尝试此代码段(根据您的情况调整):

using Microsoft.SharePoint; 
using Microsoft.SharePoint.Utilities; 
using Microsoft.SharePoint.WebPartPages; 
using Microsoft.SharePoint.WebControls;

try
{
    int flag=0;
    SPSite site = new SPSite(sharePointURL); 
    SPWeb web = site.OpenWeb(); 
    web.AllowUnsafeUpdates=true;

    string strContentType=""; 
    // docLib is the name of document library
    SPFolder folder = web.GetFolder("docLib");

    SPFileCollection files=folder.Files;
    //"docLib" is name of document library and testFile.doc is the name of file
    string url=sharePointURL+"/"+"docLib"+"/"+"testFile.doc"

    SPFile tempFile = web.GetFile(url);

    //Get the extension of File.
    string []fext=this.filename[0].Split('.');
    byte []obj=(byte[])tempFile.OpenBinary();

    // Get the extension of File to determine the file type
    string casestring="";
    if(fext.Length>1)
    {
        casestring= fext[fext.Length-1];
    }
    //set the content type of file according to extension
    switch(casestring)
    {
        case "txt": 
            strContentType = "text/plain";
            break;
        case "htm" : strContentType = "text/html";
            break;
        case "html" : strContentType = "text/html";
            break;
        case "rtf" : strContentType = "text/richtext";
            break;
        case "jpg" : strContentType = "image/jpeg";
            break;
        case "jpeg": strContentType = "image/jpeg";
            break;
        case "gif" : strContentType = "image/gif";
            break;
        case "bmp" : strContentType = "image/bmp";
            break;
        case "mpg" : strContentType = "video/mpeg";
            break;
        case "mpeg": strContentType = "video/mpeg";
            break;
        case "avi" : strContentType = "video/avi";
            break;
        case "pdf" : strContentType = "application/pdf";
            break;
        case "doc" : strContentType = "application/msword";
            break;
        case "dot": strContentType = "application/msword";
            break;
        case "csv" : strContentType = "application/vnd.msexcel";
            break;
        case ".xls": strContentType = "application/vnd.msexcel";
            break;
        case ".xlt": strContentType = "application/vnd.msexcel";
            break;
        default : strContentType = "application/octet-stream";
            break;
    }
    Response.ClearContent();
    Response.ClearHeaders();
    Response.AppendHeader("Content-Disposition", 
             "attachment; filename= "+filename[0]);
    Response.ContentType = strContentType;
    //Check that the client is connected and has 
    //not closed the connection after the request
    if(Response.IsClientConnected)
        Response.BinaryWrite(obj);
    Response.Flush();
    Response.Close();
}
catch(Exception ex)
{
  //... do some logging here...
}

来源:Uploading, Deleting, and Downloading a File from SharePoint 2003 Document Library