Имя файла, установленное как base64StringtoBlob, не работает для MI Browser - PullRequest
0 голосов
/ 10 декабря 2018

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

downloadPdfFileFromBase64String(filename, base64String) {
    const blob = this.base64StringtoBlob(base64String, 'application/pdf', 
     512);
    const blobUrl = window.URL.createObjectURL(blob);
    const element = document.createElement('a');
    element.setAttribute('href', blobUrl);
    element.setAttribute('download', filename + '.pdf');
    document.body.appendChild(element);
    element.click();
    document.body.removeChild(element);
    window.URL.revokeObjectURL(blobUrl);
  }

  base64StringtoBlob(b64Data, contentType, sliceSize) {
    contentType = contentType || '';
    sliceSize = sliceSize || 512;
    const byteCharacters = atob(b64Data);
    const byteArrays = [];
    for (let offset = 0; offset < byteCharacters.length; offset += 
     sliceSize) {
      const slice = byteCharacters.slice(offset, offset + sliceSize);
      const byteNumbers = new Array(slice.length);
      for (let i = 0; i < slice.length; i++) {
        byteNumbers[i] = slice.charCodeAt(i);
      }
       const byteArray = new Uint8Array(byteNumbers);
       byteArrays.push(byteArray);
    }
    const blob = new Blob(byteArrays, { type: contentType });
    return blob;
  }

Во всех других браузерах загруженное имя файла сохраняет постоянное имя, в то время как в браузере MI сгенерированное имя файла меняется каждый раз, когда пользователь загружает файл PDF.

Пример. В обычных браузерах, если я передаю имя файла как «test», файл загружается как «test.pdf», и blobUrl добавляется в его href.В то время как в браузере MI файл загружается как «c64297e9-d3a2-40ed-b2bd-e6347d9b704c.pdf», и он всегда является случайным.

...