„500:„Interner Serverfehler“ beim Versuch, eine einfache Textdatei als Anhang über die SharePoint 2013-REST-API hinzuzufügen

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/59898

Frage

Benutzen SharePoint 2013 REST-API, Ich versuche, eine einfache Textdatei an das Element einer Liste anzuhängen.

jQuery.ajax({
    url: web.get_url() + "/_api/web/lists/GetByTitle('List1')/items(1)/AttachmentFiles/add(FileName='readme.txt')",
    type: "POST",
    headers: {
        "body": "Contents of file.",
        "content-length": 17,
        "X-RequestDigest": $("#__REQUESTDIGEST").val()
    },
    success: doSuccesRestAPIAddAttachment,
    error: doErrorRestAPIAddAttachment
  });

Ich erhalte die folgende Fehlermeldung:

500:Internal Server Error
<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code>-2147024883, Microsoft.SharePoint.SPException</m:code><m:message xml:lang="en-US">The data is invalid. (Exception from HRESULT: 0x8007000D)</m:message></m:error>

Kann mir jemand sagen, was ich falsch mache?

Danke.

War es hilfreich?

Lösung

Interessante Frage!Ich habe die Seite gelesen, auf die Sie verlinkt haben.Die Anleitung dort ist manchmal etwas verwirrend.Nach einigem Experimentieren könnte ich wie Sie einen Anhang hinzufügen:

$.ajax({
    url: "/_api/web/lists/GetByTitle('List1')/items(1)/AttachmentFiles/add(FileName='readme.txt')",
    type: "POST",
    data: "Contents of file.",
    headers: {        
        "X-RequestDigest": $("#__REQUESTDIGEST").val()
    }
  });

Ich habe direkt im Root-Web getestet und keine Rückrufe bereitgestellt, nur um es einfach zu halten.Ich habe den „Content-Length“-Header entfernt, weil Chrome sich über einen „unsicheren Header“ beschwert hat.Ich platziere den "Inhalt der Datei". in die Anfragenutzlast (data: "Contents of file.").Das folgende Beispiel funktioniert für mich.Sagen Sie, wenn es bei Ihnen nicht der Fall ist.

Ursprüngliche Antwort:

Vielleicht ist es nicht die vollständige Antwort, aber „body“ sollte nicht in Überschriften stehen.Versuchen Sie, es außerhalb des Körpers zu platzieren.

jQuery.ajax({
    url: web.get_url() + "/_api/web/lists/GetByTitle('List1')/items(1)/AttachmentFiles/add(FileName='readme.txt')",
    type: "POST",
    body: "Contents of file.",
    headers: {        
        "content-length": 17,
        "X-RequestDigest": $("#__REQUESTDIGEST").val()
    },
    success: doSuccesRestAPIAddAttachment,
    error: doErrorRestAPIAddAttachment
  });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top