<small id='SBABH'></small><noframes id='SBABH'>

      <tfoot id='SBABH'></tfoot>
        <bdo id='SBABH'></bdo><ul id='SBABH'></ul>
      <legend id='SBABH'><style id='SBABH'><dir id='SBABH'><q id='SBABH'></q></dir></style></legend>
      1. <i id='SBABH'><tr id='SBABH'><dt id='SBABH'><q id='SBABH'><span id='SBABH'><b id='SBABH'><form id='SBABH'><ins id='SBABH'></ins><ul id='SBABH'></ul><sub id='SBABH'></sub></form><legend id='SBABH'></legend><bdo id='SBABH'><pre id='SBABH'><center id='SBABH'></center></pre></bdo></b><th id='SBABH'></th></span></q></dt></tr></i><div id='SBABH'><tfoot id='SBABH'></tfoot><dl id='SBABH'><fieldset id='SBABH'></fieldset></dl></div>

        在 JavaScript 中下载 PDF Blob 时出现问题

        时间:2023-09-30
        <tfoot id='Q8j4O'></tfoot>

      2. <small id='Q8j4O'></small><noframes id='Q8j4O'>

              <legend id='Q8j4O'><style id='Q8j4O'><dir id='Q8j4O'><q id='Q8j4O'></q></dir></style></legend>

                  <bdo id='Q8j4O'></bdo><ul id='Q8j4O'></ul>
                  <i id='Q8j4O'><tr id='Q8j4O'><dt id='Q8j4O'><q id='Q8j4O'><span id='Q8j4O'><b id='Q8j4O'><form id='Q8j4O'><ins id='Q8j4O'></ins><ul id='Q8j4O'></ul><sub id='Q8j4O'></sub></form><legend id='Q8j4O'></legend><bdo id='Q8j4O'><pre id='Q8j4O'><center id='Q8j4O'></center></pre></bdo></b><th id='Q8j4O'></th></span></q></dt></tr></i><div id='Q8j4O'><tfoot id='Q8j4O'></tfoot><dl id='Q8j4O'><fieldset id='Q8j4O'></fieldset></dl></div>

                    <tbody id='Q8j4O'></tbody>
                  本文介绍了在 JavaScript 中下载 PDF Blob 时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我创建了一个函数,它采用 blobfileName 应该下载该 blob 实现如下:

                  I've created a function that takes a blob and fileName which is supposed to download that blob implemented as follows:

                  const blobToBase64 = (blob, callback) => {
                    const reader = new FileReader();
                    reader.onloadend = () => {
                      const base64 = reader.result;
                      console.log({ base64 });
                      callback(base64);
                    };
                    reader.readAsDataURL(blob);
                  };
                  
                  const downloadFile = (blob, fileName) => () => {
                    const link = document.createElement('a');
                    blobToBase64(blob, (base64) => {
                      link.href = base64;
                      link.download = fileName;
                      link.click();
                    });
                  };
                  
                  
                  downloadFile(myBlob, myFileName);
                  

                  为了尝试调试,我制作了一个 console.log 以注销 reader.result 创建的 base64 的值.

                  To try debug this I've made a console.log to log out the value of base64 which is created by reader.result.

                  那个base64的值是data:application/octet-stream;base64,Mzc4MDY4...

                  我的 PDF 文件已下载,但已损坏.我在文件下载实现中做错了什么?

                  My PDF file get's downloaded but it's corrupted. What am I doing wrong in my file download implementation?

                  如果有任何其他细节可能对此有所帮助,请告诉我?我 100% 确定 blob 本身不是损坏的文件.

                  Let me know if there are any additional details that might help with this? I'm 100% sure that the blob itself is not a corrupted file.

                  推荐答案

                  我无法确定您的代码为什么不起作用,但我可以确定您所做的最多是无用的.

                  I can't tell for sure why your code doesn't work, but I can tell for sure that what you are doing is useless at best.

                  p>

                  不要将 Blob 转换为 dataURI,在 99%* 的情况下,您想要使用此 dataURI 执行的操作可以直接使用原始 Blob 和 blobURI 完成.

                  Do not convert a Blob to a dataURI, 99%* of the time, what you want to do with this dataURI can be done directly with the original Blob and a blobURI.

                  *剩下的 1% 是当您需要创建包含二进制数据的独立文档时,这种情况会发生,但并不经常发生.

                  在这里,你想要做的(设置一个锚点指向你的 Blob 的数据)可以直接用 Blob 完成:只需通过调用创建一个 blobURI(它只是指向内存中数据的指针)URL.createObjectURL(blob).

                  Here, once again what you want to do (set an anchor to point to your Blob's data) can be done with the Blob directly: simply create a blobURI (which is just a pointer to the data in memory) by calling URL.createObjectURL(blob).

                  const downloadFile = (blob, fileName) => {
                    const link = document.createElement('a');
                    // create a blobURI pointing to our Blob
                    link.href = URL.createObjectURL(blob);
                    link.download = fileName;
                    // some browser needs the anchor to be in the doc
                    document.body.append(link);
                    link.click();
                    link.remove();
                    // in case the Blob uses a lot of memory
                    setTimeout(() => URL.revokeObjectURL(link.href), 7000);
                  };
                  
                  
                  downloadFile(new Blob(['random data']), "myfile.txt");

                  这篇关于在 JavaScript 中下载 PDF Blob 时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:Javascript - 从 base64 图像获取扩展名 下一篇:使用javascript获取Base64 PNG的像素颜色?

                  相关文章

                  <small id='bQPE3'></small><noframes id='bQPE3'>

                    1. <i id='bQPE3'><tr id='bQPE3'><dt id='bQPE3'><q id='bQPE3'><span id='bQPE3'><b id='bQPE3'><form id='bQPE3'><ins id='bQPE3'></ins><ul id='bQPE3'></ul><sub id='bQPE3'></sub></form><legend id='bQPE3'></legend><bdo id='bQPE3'><pre id='bQPE3'><center id='bQPE3'></center></pre></bdo></b><th id='bQPE3'></th></span></q></dt></tr></i><div id='bQPE3'><tfoot id='bQPE3'></tfoot><dl id='bQPE3'><fieldset id='bQPE3'></fieldset></dl></div>

                      <tfoot id='bQPE3'></tfoot>
                    2. <legend id='bQPE3'><style id='bQPE3'><dir id='bQPE3'><q id='bQPE3'></q></dir></style></legend>
                        <bdo id='bQPE3'></bdo><ul id='bQPE3'></ul>