«500: Ошибка внутреннего сервера» При попытке добавить простой текстовый файл в виде вложения через API для отдыха SharePoint 2013

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

Вопрос

Использование SharePoint 2013 REST API , я пытаюсьПрикрепите простой текстовый файл к элементу списка.

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

Я получаю следующую ошибку:

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>
.

Может кто-нибудь сказать мне, что я делаю не так?

спасибо.

Это было полезно?

Решение

Интересный вопрос!Я прочитал страницу, на которую вы связали.Иногда в инструкциях немного запутаются.После некоторых экспериментов я мог бы добавить вложение, как вы делаете:

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

Я протестировал непосредственно в корневой сети и не предоставил никаких обратных вызовов, чтобы просто сохранить его.Я удалил заголовок «длиной контента», потому что Chrome жаловался на «небезопасный заголовок».Я положил «содержимое файла».в загрузку запроса (data: "Contents of file.").Пример ниже работает для меня.Скажи, если это не для вас.

<Сильный> Оригинальный ответ:

Может быть, это не полный ответ, но «тело» не должно быть внутри заголовков.Попробуйте положить его за пределы тела.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top