none
Upload de arquivo dentro da web part RRS feed

  • Pergunta

  • Boa noite!

    Criei uma web part que faz o upload de um arquivo, salva ele em uma pasta e depois armazena as informações do arquivo em uma lista.

    Dim site As SPSite = SPContext.Current.Site
    site.AllowUnsafeUpdates = True
    arquivo.SaveAs(Server.MapPath("curriculos/" & nomeArquivo)) 'o caminho de currículos é C:\inetpub\wwwroot\wss\VirtualDirectories\90\curriculos\
    'o nome do arquivo é o nome do arquivo sem caracteres especiais ou espaços

     

    O problema esta ocorrendo porque ele não esta encontrando a pasta que eu criei...
    Eu fiquei meio confusa com a hierarquia de pastas do sharepoint e realmente não consegui encontrar ela, mesmo conseguindo visualizá-la pelo Designer.
    Alguma luz?

    Att,


    quarta-feira, 15 de junho de 2011 22:33

Respostas

  • Gelisson e Fabian, obrigada!
    Eu consegui fazer!

    Utilizei o codigo encontrado em
    http://social.msdn.microsoft.com/Forums/en-CA/sharepointcustomization/thread/18e6a7fa-9122-48b5-996b-c80397f536e8
    Com alguns acréscimos.

    Segue minha versão abaixo:

     

    'arquivo é o campo de upload 
    Dim iStream As Stream = arquivo.PostedFile.InputStream
      Dim basenamestart As Integer = arquivo.PostedFile.FileName.LastIndexOf("\")
      Dim fname As String = arquivo.PostedFile.FileName.Substring(basenamestart + 1)
      Dim status As String = UploadToDoclibrary(iStream, fname, Request.LogonUserIdentity.Name)
      Response.Write("resultado da função - " & status & "<br>")
    
    Private Shared Function UploadToDoclibrary(ByVal inputStream As Stream, ByVal filename As String, ByVal username As String) As String
      Dim mySiteCollection As SPSite = SPContext.Current.Site
      Dim mySite As SPWeb = SPContext.Current.Web
      mySite.AllowUnsafeUpdates = True
    
      Dim ctcFolder As SPFolder = mySite.GetFolder("Curriculos")
      ctcFolder.Files.Add(filename, inputStream)
      ctcFolder.Update()
      mySite.Close()
      Return "Upload realizado com sucesso!"
     End Function
    

    Ainda faltam algumas adaptações para não deixar que arquivos sejam sobrescritos.
    Mas isso agora é de boa!

    Obrigada a todos pela ajuda!

     

     


    • Marcado como Resposta WAS_bm quinta-feira, 16 de junho de 2011 14:30
    quinta-feira, 16 de junho de 2011 14:29

Todas as Respostas

  • Olá  Walquiriabm,

     

    Por que vc não lê o arquivo direto do SharePoint ao invés de gravar ele em disco? Fica um pouco mais fácil e vc não precisa se preocupar em local para salvá-lo no disco. Já que pelo que eu entendi o arquivo é só algo temporário que terá seus dados armazenados na lista.

    A estrutura de pastas do SharePoint é bem simples, basicamente você terá bibliotecasa ou listas dentro de sites e dentro dessas bibliotecas ou listas terá pastas e sub pastas. Lembrando que os arquivos ou itens estarão obrigatoriamente numa biblioteca ou lista, respectivamente.

    Se vc precisar realmente acessar o diretório, poste aqui.

     


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br
    quinta-feira, 16 de junho de 2011 01:59
    Moderador
  • Olá, Fabian!

    Eu preciso armazenar o arquivo o arquivo também.
    Essa web part é um sistema de cadastro de currículo, onde o usuário final vai preencher algumas informações e anexar seu currículo.
    Eu preciso então gravar essa informações mais o arquivo na lista.

    Existe alguma forma de fazer o upload com algum "código" do sharepoint?

    Obrigada!

     

    quinta-feira, 16 de junho de 2011 14:05
  • Pegue o splistitem e e so fazer o procedimento abaixo, na tela coloque um simples botão para upload.                 

     

                HttpPostedFile newAttach = Page.Request.Files[i];
                byte[] fileContents = new byte[newAttach.ContentLength - 1];
                newAttach.InputStream.Seek(0, System.IO.SeekOrigin.Begin);
                newAttach.InputStream.Read(fileContents, 0, newAttach.ContentLength - 1);
                System.IO.FileInfo fInfo = new System.IO.FileInfo(newAttach.FileName);
                lstItem.Attachments.Add(fInfo.Name, fileContents);
    
    

    Ps.: Minha sugestão dependendo do tipo de cadastro que você esta fazendo e utilizar o infopath, muitas vezes e mais rapido e atende bem.


    Gleisson Ricardo Pinheiro [MSP] - Moderador DotNetRaptors
    quinta-feira, 16 de junho de 2011 14:11
  • Gelisson e Fabian, obrigada!
    Eu consegui fazer!

    Utilizei o codigo encontrado em
    http://social.msdn.microsoft.com/Forums/en-CA/sharepointcustomization/thread/18e6a7fa-9122-48b5-996b-c80397f536e8
    Com alguns acréscimos.

    Segue minha versão abaixo:

     

    'arquivo é o campo de upload 
    Dim iStream As Stream = arquivo.PostedFile.InputStream
      Dim basenamestart As Integer = arquivo.PostedFile.FileName.LastIndexOf("\")
      Dim fname As String = arquivo.PostedFile.FileName.Substring(basenamestart + 1)
      Dim status As String = UploadToDoclibrary(iStream, fname, Request.LogonUserIdentity.Name)
      Response.Write("resultado da função - " & status & "<br>")
    
    Private Shared Function UploadToDoclibrary(ByVal inputStream As Stream, ByVal filename As String, ByVal username As String) As String
      Dim mySiteCollection As SPSite = SPContext.Current.Site
      Dim mySite As SPWeb = SPContext.Current.Web
      mySite.AllowUnsafeUpdates = True
    
      Dim ctcFolder As SPFolder = mySite.GetFolder("Curriculos")
      ctcFolder.Files.Add(filename, inputStream)
      ctcFolder.Update()
      mySite.Close()
      Return "Upload realizado com sucesso!"
     End Function
    

    Ainda faltam algumas adaptações para não deixar que arquivos sejam sobrescritos.
    Mas isso agora é de boa!

    Obrigada a todos pela ajuda!

     

     


    • Marcado como Resposta WAS_bm quinta-feira, 16 de junho de 2011 14:30
    quinta-feira, 16 de junho de 2011 14:29