Mam Blob URL, muszę go przekształcić w bajt [] do przechowywania celu. Początkowo próbowałem konwertować go do podstawy64 za pomocą FileReader

    var xhr = new XMLHttpRequest;
    xhr.responseType = 'blob';

    xhr.onload = function() {
        var recoveredBlob = xhr.response;
        var reader = new FileReader;

        reader.onload = function() {
            var blobAsDataUrl = reader.result;
            return blobAsDataUrl.toString().replace('data:image/png;base64,', '');
        };
        reader.readAsDataURL(recoveredBlob);
    };

    xhr.open('GET', blobUrl);
    xhr.send(); 

Następnie używany do konwersji do tablicy


var bData = atob(blob);
console.log('------ bData : ', bData);
const array = Uint8Array.from(bData, b => b.charCodeAt(0));

Ale nie otrzymuję zamierzonego wyjścia binarnego ..

0
udda 19 październik 2020, 15:41

1 odpowiedź

Najlepsza odpowiedź

Udało mi się to osiągnąć i może to nie być odpowiedni sposób, ale publikowanie tutaj, jakby ktoś inny mógł go znaleźć przydatne.

Więc to, co mam, to adres URL blob i

var xhr = new XMLHttpRequest;
xhr.responseType = 'blob';

xhr.onload = function() {
    var recoveredBlob = xhr.response;
    const reader = new FileReader();
    // This fires after the blob has been read/loaded.
    reader.addEventListener('loadend', (e) => {
        blob =  new Uint8Array(e.target.result);
        // calling the save method
    });
    // Start reading the blob as text.
    reader.readAsArrayBuffer(recoveredBlob);
};
// get the blob through blob url 
xhr.open('GET', blobUrl_);
xhr.send();

Musiałem też wykonać modyfikację do mojego połączenia serwisowego jQuery, Musiał dodać PROCESSDATA: false , w przeciwnym razie przechodzą tablicę zostanie przetworzona, aw moim przypadku usługa nie została usiana.

$.ajax({
    type: 'PATCH',
    url: url_,
    contentType: 'application/octet-stream',   
    data: blob,
    processData: false,
    headers: {
        "If-Match": newEtag,
        "X-XSRF-TOKEN": xsrfSessionCookie,
    },
    success: function (res) {
        // do something 
    } 
});

Twoje zdrowie

0
udda 21 październik 2020, 06:38