Как превратить responseText в изображение с sharepoint? - PullRequest
0 голосов
/ 25 января 2019

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

����JFIFS���E������ ..

обратно в изображение.

Мне удалось получить URL-адрес моих файлов sharepoint, и когда я поместил его в браузер, он автоматически загрузит изображение.Я также получил accessToken, чтобы получить разрешение на файлы.

Я попытался использовать кодировщик base64 из внешнего скрипта для преобразования responseText и не смог отобразиться как изображение.Кстати, window.atob() или window.btoa(), похоже, ничего не делает для моего responseText.

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

/ 9j / 4AAQSkZJRgABAQAAAQABAAD / 2wB ..

.Тем не менее, строка, которую я получил от использования base64encoder, которую я нашел онлайн, запускается такотображаться в, но ничего не происходит.Я тоже пробовал использовать ajax, но отмечаю, что работает.Пожалуйста, кто-нибудь может мне помочь?

Я следил за этим https://sharepoint.stackexchange.com/questions/231251/fetch-and-display-image-from-sharepoint-list-javascript

1 Ответ

0 голосов
/ 25 января 2019

Надеюсь, приведенный ниже скрипт будет вам полезен.

<script type="text/javascript">        
    function Uint8ToBase64(u8Arr) {
        var CHUNK_SIZE = 0x8000; //arbitrary number
        var index = 0;
        var length = u8Arr.length;
        var result = '';
        var slice;
        while (index < length) {
            slice = u8Arr.subarray(index, Math.min(index + CHUNK_SIZE, length));
            result += String.fromCharCode.apply(null, slice);
            index += CHUNK_SIZE;
        }
        return btoa(result);
    }
    $(function () {
        var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/GetFileByServerRelativeUrl('" + _spPageContextInfo.siteServerRelativeUrl + "/MyDoc/panda.jpg')/openbinarystream";
        var xhr = new window.XMLHttpRequest();
        xhr.open("GET", url, true);
        //Now set response type
        xhr.responseType = 'arraybuffer';
        xhr.addEventListener('load', function () {
            if (xhr.status === 200) {
                var sampleBytes = new Uint8Array(xhr.response);
                var imageBase64 = Uint8ToBase64(sampleBytes);
                document.getElementById("imgplaceholder").src = "data:image/jpeg;base64," + imageBase64;
            }
        })
        xhr.send();
    })

</script>
<div><img id="imgplaceholder" alt="place here" /></div>
...