react使用post从服务器下载文件,发现360浏览器有问题

react中实现从服务器下载文件

百度找了个大牛写的便用在项目上,用谷歌,IE测试可以正常下载文件,用360浏览器会出现问题,页面切换会神奇的进入点击事件downloadDetailData这个方法回调里面,也就是会再次触发下载文件,其它浏览器不会,就360浏览器会出现这个问题,求解决,或者大家有在项目中使用过别的方法的话可以分享下么

//内容来源 https://blog.csdn.net/jiangkai528/article/details/78852777

downloadDetailData=()=>{
    var divElement= document.getElementById("downloadDiv");
    var downloadUrl=`${apiBasePath}/api/xxxxx/downloadDetailData`;
    var params=JSON.stringify({
         key:'value'
    })
    ReactDOM.render(
          <form action={downloadUrl} method="post">
            <input name="params" type="text" value={params}/> 
          </form>,
          divElement
      )
    ReactDOM.findDOMNode(divElement).querySelector('form').submit();
    ReactDOM.unmountComponentAtNode(divElement);
}
render() {
  <div>
    <div id='downloadDiv' style={{display:'none'}}> </div>
    <Button type="primary" onClick={this.downloadDetailData}>导出</Button>
  </div>
}
阅读 5.2k
3 个回答

网上找了另外一个版本,发现用在项目上可行,其它浏览器测了暂时没发现有啥问题

let formElement = document.createElement('form');
formElement.style.display = "display:none;";
formElement.method = 'post';
formElement.action = ${apiBasePath}/api/xxxxx/downloadDetailData;
formElement.target = 'callBackTarget';
let inputElement = document.createElement('input');
inputElement.type = 'hidden';
inputElement.name = "params" ;
inputElement.value = params;
formElement.appendChild(inputElement);
document.body.appendChild(formElement);
formElement.submit();
document.body.removeChild(formElement);

下载个文件,哪有那么麻烦。
这个下载文件是我们用的,没出什么问题:
download

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题