« 500 :Erreur de serveur interne »lors de la tentative d'ajout d'un simple fichier texte en pièce jointe via l'API REST SharePoint 2013

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

Question

En utilisant API REST SharePoint 2013, j'essaie de joindre un simple fichier texte à un élément de liste.

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

J'obtiens l'erreur suivante :

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>

Quelqu'un peut-il me dire ce que je fais de mal ?

Merci.

Était-ce utile?

La solution

Question interessante!J'ai lu la page à laquelle vous avez lié.Les instructions y sont parfois un peu confuses.Après quelques expérimentations, je pourrais ajouter une pièce jointe comme vous le faites :

$.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()
    }
  });

J'ai testé directement dans le site Web racine et je n'ai fourni aucun rappel juste pour rester simple.J'ai supprimé l'en-tête "Content-Length" car Chrome s'est plaint d'un "en-tête dangereux".J'ai mis le "contenu du fichier". dans la charge utile de demande (data: "Contents of file.").L'exemple ci-dessous fonctionne pour moi.Dis si ce n'est pas pour toi.

Réponse originale :

Ce n'est peut-être pas la réponse complète, mais "corps" ne devrait pas figurer dans les en-têtes.Essayez de le mettre en dehors du corps.

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
  });
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top