2016-06-14 1 views
0

Je dois joindre un fichier à un élément de liste SharePoint. J'ai déjà créé un formulaire avec un contrôle de téléchargement de fichiers mais je n'arrive pas à le faire fonctionner! Puis-je avoir de l'aide?FileUpload to SharePoint List Pièce jointe

protected void btnSave_Click(object sender, EventArgs e) 
    { 
     SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      using (SPSite site = new SPSite("http://intradev")) 
      { 
       using (SPWeb web = site.OpenWeb("/")) 
       { 
        web.AllowUnsafeUpdates = true; 

        SPList app = web.Lists["projetoandre"]; 

        SPListItemCollection collection = app.GetItems(); 

        SPListItem item = collection.Add(); 
        item["Title"] = txtTitle.Text; 
        item["Data"] = Convert.ToString(txtDataPretendida.Text); 
        item["Banco"] = Convert.ToString(ddlBanco.Text); 
        item["Confirmação"] = Convert.ToString(rdlUrgencia.Text); 

        //Stream fs = FileUploadControl.PostedFile.InputStream; 
        //byte[] fileContents = new byte[fs.Length]; 
        //fs.Read(fileContents, 0, (int)fs.Length); 
        //fs.Close(); 

        SPAttachmentCollection attachments = item.Attachments; 
        //string fileName = "Ficheiro_" + Path.GetFileName(FileUploadControl.PostedFile.FileName); 
        //attachments.Add(fileName, fileContents); 

        item.Update(); 

        web.AllowUnsafeUpdates = false; 
       } 
      } 
     }); 
    } 

Merci! Edit: En commentant ces lignes de code, je suis capable de remplir la liste mais bien sûr, sans pièce jointe!

+0

Quel est le problème que vous rencontrez? Avez-vous une erreur? –

+0

Je ne suis pas en mesure de créer un nouvel élément et de lui attacher un fichier. –

+0

Essayez de commenter la partie pièce jointe pour voir si l'élément de la liste est créé .. Faites-moi savoir si cela fonctionne .. –

Répondre

0

Le problème que vous rencontrez peut être dû à la sécurité de SharePoint. Essayez l'extrait suivant:

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    SPSecurity.RunWithElevatedPrivileges(delegate() 
    { 
     using (SPSite site = new SPSite("http://thiswebsite")) 
     { 
      using (SPWeb web = site.OpenWeb("/")) 
      { 
       web.AllowUnsafeUpdates = true; 

       SPList app = web.Lists["projetoandre"]; 

       SPListItemCollection collection = app.GetItems(); 

       SPListItem item = collection.Add(); 
       item["Title"] = txtTitle.Text; 
       item["Data"] = Convert.ToString(txtDataPretendida.Text); 
       item["Banco"] = Convert.ToString(ddlBanco.Text); 
       item["Confirmação"] = Convert.ToString(rdlUrgencia.Text); 

       if(FileUploadControl.HasFile) 
       { 
        Stream fs = FileUploadControl.PostedFile.InputStream; 
        byte[] fileContents = new byte[fs.Length]; 
        fs.Read(fileContents, 0, (int)fs.Length); 
        fs.Close(); 

        SPAttachmentCollection attachments = item.Attachments; 
        string fileName = "Ficheiro_" + Path.GetFileName(FileUploadControl.PostedFile.FileName); 
        attachments.Add(fileName, fileContents); 
       } 

       item.Update(); 

       web.AllowUnsafeUpdates = false; 
      } 
     } 
    }); 
} 

Dans le fichier de contrôle utilisateur, ajoutez l'extrait suivant après la fin de <ContentTemplate> étiquette immédiatement avant la fermeture du <asp:UpdatePanel>:

<Triggers> 
     <asp:PostBackTrigger ControlID = "btnSave" /> 
</Triggers> 
+0

NullReferenceException n'a pas été gérée par le code. La référence d'objet n'est pas définie à une instance d'un objet. Flux fs = FileUploadControl.PostedFile.InputStream; –

+0

@ ANDRÉGONÇALVES, vérifiez mon edit .. –

+0

Je vais essayer et je vous le ferai savoir! –