如何使用reactjs下载Docx文件或msWord文件?

发布于 2025-01-19 09:12:47 字数 926 浏览 0 评论 0原文

当用户单击按钮时,我一直在尝试弄清楚如何创建下载功能。

我尝试使用文件保存库,但结果尚未如预期的那样,我也尝试了一个周转并使用了其他方法,但同样是相同的。

当我使用fetch api使用第二种方法下载文件时,文件获取是一个损坏的文件。 请参阅下面的代码,其中还具有CODESANDBOX链接。

方法1

const onDownload1 = () => {
    saveAs("../../testFile.docx", "testFile.docx");
  }; 

方法2

const onDownload2 = () => {
    fetch("../../testFile.docx").then((response) => {
      response.blob().then((blob) => {
        let url = window.URL.createObjectURL(blob);
        let a = document.createElement("a");
        a.href = url;
        a.download = "testFile.docx";
        a.click();
      });
    });
  };

完整源代码链接

单击以在codesandbox中打开。

感谢您的帮助和时间。

I have been trying to figure out how can I create a download functionality when a user clicks on a button.

I tried to use the File save library but the result is not as expected, also I tried a turnaround and used a different approach but again the same.

When I download the file using the 2nd approach that is by using fetch API the file am getting is a corrupted file.
Please see the code below with the codeSandbox link as well.

Approach 1

const onDownload1 = () => {
    saveAs("../../testFile.docx", "testFile.docx");
  }; 

Approach 2

const onDownload2 = () => {
    fetch("../../testFile.docx").then((response) => {
      response.blob().then((blob) => {
        let url = window.URL.createObjectURL(blob);
        let a = document.createElement("a");
        a.href = url;
        a.download = "testFile.docx";
        a.click();
      });
    });
  };

Full source code link

Click to open in codeSandbox.

Thanks for the help and time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

饮湿 2025-01-26 09:12:48

使用“../../testFile.docx”,应用程序尝试从托管和提供应用程序的相对路径提供文件。 testFile.docx 文件需要可访问并正确提供。

  • 如果从公共文件夹提供文件

    testFile.docx 放入 public 目录中。

    <前><代码>/公共
    +-/文件
    +-testFile.docx

    使用绝对路径访问 testFile.docx 文件。

    示例:

    • 方法 1

      const onDownload1 = () =>; {
        saveAs("/files/testFile.docx", "testFile.docx");
      };
      
    • 方法 2

      const onDownload2 = () =>; {
        fetch("/files/testFile.docx").then((response) => {
          response.blob().then((blob) => {
            让 url = window.URL.createObjectURL(blob);
            let a = document.createElement("a");
            a.href = 网址;
            a.download = "testFile.docx";
            a.点击();
          });
        });
      };
      
  • 如果导入并在本地使用

    从“./testFile.docx”导入文件;

    • 方法 3

      const onDownload3 = () =>; {
        saveAs(文件, "testFile.docx");
      };
      
    • 方法 4

      const onDownload4 = () =>; {
        fetch(文件).then((响应) => {
          response.blob().then((blob) => {
            让 url = window.URL.createObjectURL(blob);
            let a = document.createElement("a");
            a.href = 网址;
            a.download = "testFile.docx";
            a.点击();
          });
        });
      };
      

编辑how-to-download-a-docx-file-or-msword-file-using-reactjs

With "../../testFile.docx" the app is attempting to serve the file from a relative path from where the app is being hosted and served from. The testFile.docx file needs to be accessible and served correctly.

  • If serving file from the public folder

    Place testFile.docx in the public directory.

    /public
    +-/files
      +-testFile.docx
    

    Use an absolute path to access the testFile.docx file.

    Examples:

    • Approach 1

      const onDownload1 = () => {
        saveAs("/files/testFile.docx", "testFile.docx");
      };
      
    • Approach 2

      const onDownload2 = () => {
        fetch("/files/testFile.docx").then((response) => {
          response.blob().then((blob) => {
            let url = window.URL.createObjectURL(blob);
            let a = document.createElement("a");
            a.href = url;
            a.download = "testFile.docx";
            a.click();
          });
        });
      };
      
  • If imported and used locally

    import file from './testFile.docx';

    • Approach 3

      const onDownload3 = () => {
        saveAs(file, "testFile.docx");
      };
      
    • Approach 4

      const onDownload4 = () => {
        fetch(file).then((response) => {
          response.blob().then((blob) => {
            let url = window.URL.createObjectURL(blob);
            let a = document.createElement("a");
            a.href = url;
            a.download = "testFile.docx";
            a.click();
          });
        });
      };
      

Edit how-to-download-a-docx-file-or-msword-file-using-reactjs

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文