微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 react 和 express 中创建可下载的链接

如何解决如何在 react 和 express 中创建可下载的链接

我有一个 React 应用程序,其中有一个按钮。基本上是一个 div。

这是从我的按钮组件返回的,其他一切都是道具。

<button className={"button "+styleButton} onClick={handleClick}>
    {source && <img src={source} alt={alt} className={"image "+styleImage} /> }
    <h3 className="text">{children}</h3>
</button>

现在当有人点击这个按钮(div)时我所做的是:

const handleClick = () => {
    console.log('downloading...');
    let a = document.createElement('a');
    a.href = '192.168.43.102/download/brief';
    a.download = 'brief.pdf';
    a.click();
}

点击那个 div,我想在客户端下载一个 pdf。互联网上有数百种方法。有些使用 (axios) 发送请求并在前端下载,然后创建可下载的链接,有些只使用锚标记

我尝试了其中的一些,但无法使其正常工作。也在快递方面。

这条路线是我的快车:

const router = require('express').Router();
const { Router } = require('express');
const path = require('path');
const { route } = require('./api');

const brief = path.join(__dirname,'..','/public/resources/krishi-brief.pdf');
const uml = path.join(__dirname,'/public/resources/krishi-uml.pdf');

router.get('/brief',(req,res) => {
    res.sendFile(brief);
});

router.get('/uml',res) => {
    res.download(uml);
});

router.get('/proposal',res) => {
    res.send("Not found");
});

router.get('/ppt',res) => {
    res.send("Not found");
});

module.exports = router;

我有一个非常好的 pfd,它没有损坏,但是当我拿到文件时,它已损坏,因为没有任何应用程序可以打开它。

我也试过:

router.get('/uml',res) => {
    res.set({
      'Content-Type': 'application/pdf'
    })
    res.download(uml);
});

但现在我对实现以及这是否是正确的方法感到困惑。

请告诉我这是否是在 React 应用程序中执行此操作的正确(专业)方法,以及哪里出错了?我只收到损坏的文件:(

解决方法

好的,所以当我点击下载时,服务器 192.168.43.102 应该写为 http://192.168.43.102 并且锚标签不会给出或抛出和错误,但只是下载我不确定哪个是甚至不在你的路线上。

我一直在努力的基本事情。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。