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
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 noLocal_Drive:\%WINDOWS%\assembly
na Explorer Windows.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>
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;
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.
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; }
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