"500: Error interno del servidor" al intentar agregar un archivo de texto simple como un archivo adjunto a través de SharePoint 2013 Disco API

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

Pregunta

usando sharepoint 2013 resto api , estoy tratando deAdjunte un archivo de texto simple al elemento de una lista.

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

Obtengo el siguiente error:

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>

¿Puede alguien decirme qué estoy haciendo mal?

gracias.

¿Fue útil?

Solución

Pregunta interesante!Leí la página enlazada.Las instrucciones allí son un poco confusas a veces.Después de algún experimento pude agregar un archivo adjunto como lo hace:

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

He probado directamente en la web raíz y no proporcionó ninguna devolución de llamada solo para mantenerla simple.Retiré el encabezado de "longitud de contenido" porque Chrome se quejó de "encabezado inseguro".Puse el "contenido del archivo".en la carga útil de la solicitud (data: "Contents of file.").El siguiente ejemplo funciona para mí.Di si no lo hace por ti.

Respuesta original:

Tal vez no sea la respuesta completa, sino "cuerpo", no debe estar dentro de los encabezados.Intenta ponerlo fuera del cuerpo.

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

Licenciado bajo: CC-BY-SA con atribución
scroll top