Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用React路由器从Expressr下载文件_Javascript_Reactjs_Express_React Router - Fatal编程技术网

Javascript 使用React路由器从Expressr下载文件

Javascript 使用React路由器从Expressr下载文件,javascript,reactjs,express,react-router,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) 谢谢大家! 一些测试()表明您可以使用 。 常规的 一些测试()表明您可以使用 。 常规的 我不工作,

我的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)

谢谢大家!

一些测试()表明您可以使用

  • 常规的
一些测试()表明您可以使用

  • 常规的

我不工作,浏览器“下载一个文件”(不像以前那样带我去新的路径),但有一条类似“错误:没有文件”的消息。此外,express中的路由不会被触发(它不会显示my console.logs)。看起来它仍在浏览器中处理,因为它会从服务器下载一个空文件,而不是该文件。@R.Romero打开浏览器中的开发人员工具,转到“网络”选项卡,然后单击应用程序中的按钮,查看是否在“网络”选项卡上注册了网络请求。如果没有注册,则由react/浏览器处理。另一方面,如果它出现了问题,那么问题在于后端(检查记录的url是否正确,并检查它是否完成或失败)它现在可以工作了,我认为这与Create React App的代理有关,我将我的项目移动到了一个更新的版本(v2+)并在名为setupProxy.js的文件中使用http proxy middlware库设置代理,并使用以下内容:const proxy=require('http-proxy-middleware');module.exports=函数(app){app.use(proxy('/api/',{target:'}));};现在可以了,谢谢你@R.Romero很高兴你把它整理好了。这只适用于来自同一领域的资源。我不工作,浏览器“下载一个文件”(不像以前那样带我去一个新的路径),但有一条类似“错误:没有文件”的消息。此外,express中的路由不会被触发(它不会显示my console.logs)。看起来它仍在浏览器中处理,因为它会从服务器下载一个空文件,而不是该文件。@R.Romero打开浏览器中的开发人员工具,转到“网络”选项卡,然后单击应用程序中的按钮,查看是否在“网络”选项卡上注册了网络请求。如果没有注册,则由react/浏览器处理。另一方面,如果它出现了问题,那么问题在于后端(检查记录的url是否正确,并检查它是否完成或失败)它现在可以工作了,我认为这与Create React App的代理有关,我将我的项目移动到了一个更新的版本(v2+)并在名为setupProxy.js的文件中使用http proxy middlware库设置代理,并使用以下内容:const proxy=require('http-proxy-middleware');module.exports=函数(app){app.use(proxy('/api/',{target:'}));};现在可以了,谢谢你@罗梅罗很高兴你把它整理好了。这只适用于来自同一领域的资源。
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>
  )
}
  "proxy": "http://localhost:5000"