2016-06-14 8 views
0

Ich muss eine Datei an ein SharePoint-Listenelement anfügen. Ich habe bereits ein Formular mit einem Dateiupload-Steuerelement erstellt, aber ich kann es nicht funktionieren lassen! Kann ich Hilfe haben?FileUpload in SharePoint-Liste Anhang

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; 
       } 
      } 
     }); 
    } 

Vielen Dank! Edit: Durch Kommentieren dieser Codezeilen kann ich die Liste natürlich füllen, ohne Anhang!

+0

Was ist das Problem Sie konfrontiert sind? Erhalten Sie einen Fehler? –

+0

Ich kann kein neues Objekt erstellen und eine Datei anhängen. –

+0

Versuchen Sie, den Dateianhängeteil zu kommentieren, um zu sehen, ob das Listenelement erstellt wurde. Lassen Sie mich wissen, ob das funktioniert. –

Antwort

0

Das Problem, mit dem Sie konfrontiert werden, liegt möglicherweise an der SharePoint-Sicherheit. Versuchen Sie, den folgenden Ausschnitt:

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; 
      } 
     } 
    }); 
} 

in der Benutzersteuerungsdatei, fügen Sie den folgenden Code-Schnipsel nach dem Ende des <ContentTemplate>-Tages unmittelbar vor dem Schließen der <asp:UpdatePanel>:

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

NullReferenceException wurde vom Code nicht behandelt. Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt. Stream fs = FileUploadControl.PostedFile.InputStream; –

+0

@ ANDRÉGONÇALVES, überprüfen Sie meine Bearbeitung .. –

+0

Ich werde versuchen, und ich werde Sie wissen lassen! –