Поврежденный или пустой файл при загрузке с Sharepoint с использованием rest API ajax call - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь загрузить файл из Sharepoing, используя ajax вызов со страницы html. Я могу загрузить успешно, но когда я пытаюсь загрузить файл, в случае текстового файла загрузка прошла успешно, и файл открывается с правильным содержимым, но в случае pdf файл загружается как пустой, а в случае ppt, файл corrput.

Я использую код ниже. На данный момент я пишу все, чтобы получить успешный файл. Пожалуйста, дайте мне знать, что я могу пропустить.

<apex:page controller="XXX_SharePoint" showHeader="false" sidebar="false"  showChat="false" docType="html-5.0" standardStylesheets="false" action="{!onPageLoad}">
    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js" type="text/javascript"></script>
    <Script>


        window.onload = () => {
            let code = '{!ACCESS_TOKEN}';   
            let extension = '{!extension}';

            //make a ajax callout
            $.ajax({
                url: "https://m.sharepoint.com/_api/Web/GetFileByServerRelativePath(decodedurl='/XXXDocument/pdf4.pdf')/$value", 
                type: 'get',  
                contentType: true, 
                processData: false, 
                headers: { accept: 'application/json',
                          "Authorization": "Bearer "+code,
                         },
                success: function(response){
                    alert('success response'+response)
                    var a = document.createElement('a');
                    var binaryData = [];
                    binaryData.push(response);
                    var url = window.URL.createObjectURL(new Blob(binaryData),{type: "application/octet-stream"});
                    //var url = window.URL.createObjectURL(response.blob);
                    a.href = url;
                    a.download = 'myfile.pdf';//+extension;
                    document.body.appendChild(a);
                    a.click();
                    a.remove();
                    window.URL.revokeObjectURL(url);
                },
            });
        }
    </Script>

</apex:page>
...