Compartilhar via


Como a: carregar um arquivo para um site SharePoint a partir de uma pasta local

Esta tarefa programação mostra como carregar um arquivo de um local pasta para uma pasta em um site Windows SharePoint Services wssnoverslong. A tarefa usa o EnsureParentFolder EnsureParentFolder método para garantir a existência de pasta de destino.

Procedimentos

Para carregar um arquivo para uma pasta em um site do SharePoint de um local pasta

  1. Criar um aplicativo da Web em Visual Studio 2005 conforme descrito em Como a: Criar um aplicativo da Web em um site da Web SharePoint, adicionando um controle FormDigest T:Microsoft.SharePoint.WebControls.FormDigest e uma diretiva página para o espaço para nome Microsoft.SharePoint.WebControls para o arquivo .aspx, da seguinte maneira:

                              <%@ Register Tagprefix="SharePoint" 
          Namespace="Microsoft.SharePoint.WebControls" 
       Assembly="Microsoft.SharePoint, Version=12.0.0.0, 
          Culture=neutral, 
       PublicKeyToken=71e9bce111e9429c" %>
    

    Observação

    Você pode obter o PublicKeyToken PublicKeyToken valor para o atual Windows SharePoint Services implantação a partir de arquivo Default.aspx na pasta Local_Drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates\sts Local_Drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates\sts ou informações fornecidas para o Microsoft.SharePoint assembly Microsoft.SharePoint no Local_Drive:\%WINDOWS%\assembly na Explorer Windows.

  2. Adicione um controle HtmlInputFile HtmlInputFile, um caixa de texto e um botão para a forma sobre a página .aspx:

                              <form id="Form1" method="post" runat="server">
       <SharePoint:FormDigest runat="server" />
       <input id="File1" type="file" runat="server" title="upldFileBox">
       <asp:Button id="Button1" runat="server" 
          Text="Upload File"></asp:Button>
       <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
    </form>
    
  3. Na. code-behind file aspx.cs, adicionar using N:Microsoft.SharePoint System.IO System.IO Microsoft.SharePoint As follows:

                              Imports System.IO
    Imports Microsoft.SharePoint
    
                              using System.IO;
    using Microsoft.SharePoint;
    
  4. Adicione o seguinte codificar para o Click evento para o botão:

                              If File1.PostedFile Is Nothing Then
        Return
    End If 
    
    Dim destUrl As String = TextBox1.Text
    
    Dim site As SPWeb = New SPSite(destUrl).OpenWeb()
    
    Dim fStream As Stream = File1.PostedFile.InputStream
    Dim contents(fStream.Length) As Byte
    
    fStream.Read(contents, 0, CInt(fStream.Length))
    fStream.Close()
    
    EnsureParentFolder(site, destUrl)
    
    site.Files.Add(destUrl, contents)
    
                              if (File1.PostedFile == null)
        return;
    
    string destUrl = TextBox1.Text;
    
    SPWeb site = new SPSite(destUrl).OpenWeb();
    
    Stream fStream = File1.PostedFile.InputStream;
    byte[] contents = new byte[fStream.Length];
    
    fStream.Read(contents, 0, (int)fStream.Length);
    fStream.Close(); 
    
    EnsureParentFolder(site, destUrl);
    
    site.Files.Add(destUrl, contents);
    

    O valor que você tipo no caixa de texto para o destino deve ser um URL absoluto, incluindo o nome arquivo, que é atribuído ao parâmetro destUrl destUrl.

    O uso combinado da SPWebSPSite método valida o URL além e gera uma exceção argumento se a URL não é atendido pela atual instanciar um objeto OpenWeb T:Microsoft.SharePoint.SPWeb para o site pai, implantação Windows SharePoint Services wssnoversshort. Um objeto System.Web.UI.HtmlControls.HtmlInputFile System.IO.FILESTREAM é usado para ler o arquivo de origem em uma matriz byte para uso com o Add M:Microsoft.SharePoint.SPFileCollection.Add(System.String,System.Byte[]) método do SPFileCollection T:Microsoft.SharePoint.SPFileCollection classe.

  5. O EnsureParentFolder EnsureParentFolder método garante que a pasta pai de destino URL existe no site especificado, e ela retorna o site-URL relativa da pasta pai. O EnsureParentFolder EnsureParentFolder método aceita dois parâmetros: um objeto SPWeb T:Microsoft.SharePoint.SPWeb que representa o site pai e um seqüência de caracteres que contém o URL absoluta que foi passado do UploadFile UploadFile método. Se a pasta pai não existir, o EnsureParentFolder EnsureParentFolder método criará.

                              Public Function EnsureParentFolder(parentSite As SPWeb, 
            destinUrl As String) As String
    
        destinUrl = parentSite.GetFile(destinUrl).Url
    
        Dim index As Integer = destinUrl.LastIndexOf("/")
        Dim parentFolderUrl As String = String.Empty
    
        If index > - 1 Then
            parentFolderUrl = destinUrl.Substring(0, index)
            Dim parentFolder As SPFolder 
                = parentSite.GetFolder(parentFolderUrl)
    
            If Not parentFolder.Exists Then
                Dim currentFolder As SPFolder = parentSite.RootFolder
                Dim folder As String
    
                For Each folder In  parentFolderUrl.Split("/"c)
                    currentFolder = currentFolder.SubFolders.Add(folder)
                Next folder
            End If
        End If
    
        Return parentFolderUrl
    End Function 'EnsureParentFolder
    
                              public string EnsureParentFolder(SPWeb parentSite, string destinUrl)
    {
        destinUrl = parentSite.GetFile(destinUrl).Url;
    
        int index = destinUrl.LastIndexOf("/");
        string parentFolderUrl = string.Empty;
    
        if (index > -1)
        {
            parentFolderUrl = destinUrl.Substring(0, index);
    
            SPFolder parentFolder 
                = parentSite.GetFolder(parentFolderUrl);
    
            if (! parentFolder.Exists)
            {
                SPFolder currentFolder = parentSite.RootFolder;
    
                foreach(string folder in parentFolderUrl.Split('/'))
                {
                    currentFolder 
                        = currentFolder.SubFolders.Add(folder);
                }
            }
        }
        return parentFolderUrl;
    }
    
  6. O GetFile M:Microsoft.SharePoint.SPWeb.GetFile(System.String) método do SPWeb T:Microsoft.SharePoint.SPWeb classe é usado em combinação com a propriedade Url P:Microsoft.SharePoint.SPFile.Url da classe SPFile T:Microsoft.SharePoint.SPFile para converter o URL para um site-URL relativa, lançar uma exceção se a URL especificado não for encontrado dentro de escopo do site. O URL da pasta pai é calculada, usando o String.LastIndexOf String.LastIndexOf método para determinar a última aparência de uma barra (/) dentro de destino URL. Se não houver nenhuma barra (Em outras palavras, o índice é igual a-1), o destino é a pasta raiz para o site e o parâmetro parentFolderUrl parentFolderUrl retorna um seqüência vazia. Caso contrário, o exemplo usa o GetFolder M:Microsoft.SharePoint.SPWeb.GetFolder(System.String) método do SPWeb T:Microsoft.SharePoint.SPWeb classe para retornar a pasta pai destino. Se a pasta não existir, o exemplo constrói a pasta.

Para carregar um arquivo de um local pasta sobre o mesmo servidor que esteja execução Windows SharePoint Services, você pode usar um objeto System.IO.FileStream System.IO.FILESTREAM em vez disso. Neste maiúsculas e minúsculas, adicionar um usingSystem.IO espaço, in addition to diretivas para System e Microsoft.SharePoint para nome. O seguinte exemplo usa o Click manipulador de eventos para chamar um UploadFile método UploadFile, que chama o descrito anteriormente EnsureParentFolder EnsureParentFolder método in TURN.

                    Public Sub UploadFile(srcUrl As String, destUrl As String)

    If Not File.Exists(srcUrl) Then

        Throw New ArgumentException(String.Format("{0} does not exist", 
            srcUrl), "srcUrl")

    End If

    Dim site As SPWeb = New SPSite(destUrl).OpenWeb()

    Dim fStream As FileStream = File.OpenRead(srcUrl)
    Dim contents(fStream.Length) As Byte
    fStream.Read(contents, 0, CInt(fStream.Length))
    fStream.Close()

    EnsureParentFolder(site, destUrl)

    site.Files.Add(destUrl, contents)

End Sub 'UploadFile
                    public void UploadFile(string srcUrl, string destUrl)
{
    if (! File.Exists(srcUrl))
    {
        throw new ArgumentException(String.Format("{0} does not exist", 
            srcUrl), "srcUrl");
    }

    SPWeb site = new SPSite(destUrl).OpenWeb();

    FileStream fStream = File.OpenRead(srcUrl);
    byte[] contents = new byte[fStream.Length];
    fStream.Read(contents, 0, (int)fStream.Length);
    fStream.Close(); 

    EnsureParentFolder(site, destUrl);
    site.Files.Add(destUrl, contents);
}

O UploadFile UploadFile método aceita dois parâmetros. O parâmetro ** srcUrl especifica o caminho da localidade de origem na sistema de arquivos de local computador e o parâmetro destUrl destUrl especifica o URL absoluta de destino. Um objeto System.IO.FileStream System.IO.FILESTREAM é usado para ler o arquivo de origem em uma matriz byte para uso com o Add M:Microsoft.SharePoint.SPFileCollection.Add(System.String,System.Byte[]) método do SPFileCollection T:Microsoft.SharePoint.SPFileCollection classe.

Observação

O tamanho do arquivo que é carregado não pode exceder 2 GB.

Consulte também

Conceitos

Trabalhando com lista de objetos e coleções
Guia de Introdução Com programaticamente personalizar uma Web Site SharePoint em Visual Studio
A validação de segurança e fazer postagens para atualizar os dados
Elevação de privilégio