Удаление файлов из SharePoint онлайн, почему это всегда приводит к ошибке 403? - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь удалить файл из папки в библиотеке документов в SharePoint через службы REST. Я уже делаю несколько других операций CRU (D) для файлов и списков для этого решения, все работает нормально, за исключением (D) elete.

Я пробовал несколько способов доступа к файлу, например, GetFileByServerRelativeUrl, GetFileById (=UniqueID), GetFolderByServerRelativeUrl с последующим использованием /Files. Я также попытался сделать это через ListItems, то есть, используя /lists/getByTitle('MyTitle')/items(ID). Я администратор семейства сайтов для этого сайта. Я получаю X-RequestDigest, который отлично работает для всех других операций. Решение написано на TypeScript & React и использует axios для http-запросов.

var deleteConfig = {
        headers: {
          "accept": "application/json;odata=verbose",
          "IF-MATCH": "*",
          "X-HTTP-Method": "DELETE",
          "X-RequestDigest": (document.querySelector("#__REQUESTDIGEST") as HTMLInputElement).value
        }
      }

axios.post(this.props.baseUrl + "/_api/web/getfilebyserverrelativeurl('/sites/MySite/DocLib/Test5.txt')/recycle()", deleteConfig)
        .then(response => {
          resolve();
        })
        .catch(ex => {
          if (ex.response.status === 403) {
            alert("Access Denied!");
            console.log(ex);
          } else {
            alert("Error deleting file (" + ex.response.status + "): " + ex);
            console.log(ex);
          }
          reject();
        });

Любое удаление (с или без "/ recycle ()") приводит к ошибке 403 с сообщением "Проверка безопасности этой страницы недействительна и может быть повреждена. Пожалуйста, используйте кнопку" Назад "в вашем веб-браузере, чтобы повторить попытку. ». Я не могу понять, почему этот вызов не удался, когда все другие сообщения, слияния и путы работают нормально.

1 Ответ

0 голосов
/ 17 июня 2019

Попробуйте этот код, используя JQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script>
    $(function () {
    bindButtonClick();
    });

    function bindButtonClick() {
    $("#btnSubmit").on("click", function () {
    deleteDocument();
    });
    }

    function deleteDocument() {
    var siteUrl = _spPageContextInfo.webAbsoluteUrl;
    var webRelUrl = _spPageContextInfo.webServerRelativeUrl;
    var fullUrl = siteUrl + "/_api/web/GetFileByServerRelativeUrl('" + webRelUrl + "/DocLib/" + "Test5.txt" + "')";

    $.ajax({
    url: fullUrl,
    type: "POST",
    headers: {
    "accept": "application/json;odata=verbose",
    "content-type": "application/json;odata=verbose",
    "X-RequestDigest": $("#__REQUESTDIGEST").val(),
    "X-HTTP-Method": "DELETE",
    "IF-MATCH": "*"
    },
    success: onQuerySucceeded,
    error: onQueryFailed
    });
    }

    function onQuerySucceeded() {
    $("#divResults").html("Document successfully deleted!");
    }

    function onQueryFailed(sender, args) {
    alert("Error!");
    }
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...