javascript - 使用 React Router 从 Expressr 下载文件

标签 javascript reactjs express react-router

我的 server.js 上有这条路由

app.get('/api/users/download/:id', auth, admin, (req, res) => {
  const file = path.resolve(".") + `/uploads/${req.params.id}`;
    res.download(file)
})

这是我在 React 中的组件的一部分(使用 CRA)

class AddFile extends Component {
          showFileList = () => (
                this.state.files ?
                    this.state.files.map((item,i)=>(
                        <li key={i}>
                            <Link to={`/api/users/download/${item}`} target="_blank">
                                {item}
                            </Link>
                        </li>
                    ))
                :null
            )
}

    render() {
        return (
          <div>
             {this.showFileList()}
           </div>
          );
    }
export default AddFile;

这些是我的一些路线

const Routes = () => {
  return(
    <Layout>
      <Switch>
        <Route path="/admin/add_file" exact component={Auth(AddFile, true)}/>
        <Route component={Auth(PageNotFound)}/>
      </Switch>
    </Layout>
  )
}

当我点击 li 项目时,它会带我到 404 未找到路线,当它应该带我到我在 Express 中处理的路线并下载文件时,但显然首先被 react 路由器捕获并显示我我创建的“未找到”页面,是否与 package.json 上的代理有关?

  "proxy": "http://localhost:5000"

谢谢!

最佳答案

一些测试( https://codesandbox.io/s/8ykx3j88v0 )表明您可以使用

  • <Link to="/some-file" download target="_self">..</Link>
  • 常规<a href="/some-file" download>...</a>

关于javascript - 使用 React Router 从 Expressr 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53424369/

相关文章:

javascript - 仅用一个滚动条在 X 轴上移动三个表格

javascript - Express 根据当前加载的页面设置样式表的条件加载

javascript - 如何在 Express 中获取 URL 参数?

javascript - 如何使用 react 在图像中的对象上绘制矩形?

javascript - 如何使用适用于以下场景的通用handleChange来更新以下状态:

node.js - 如何知道用户是否使用passport.js 登录?

javascript - jqgrid 的 XML 未绑定(bind)

javascript - 从 Angular 服务加载 JSON 数据

javascript - 使用 flask 从传单 map 收集数据

javascript - 如何在客户端合并两个音频文件。 (甚至服务器端)