如何使用laravel响应在ajax中成功下载文件

如何使用laravel响应在ajax中成功下载文件,ajax,laravel,file,download,response,Ajax,Laravel,File,Download,Response,我正在制作PDF的zip文件,然后在浏览器中下载。。我已经使用了ajax,希望接收响应文件,以便下载它 return response()->download(public_path().'/documents/'.$zipName , $zipName, $headers); 我也尝试过这种方法,但没有成功,我不知道我错过了什么 拉威尔反应: $downloadData = [ 'zipFile' => $zipName, 'head

我正在制作PDF的zip文件,然后在浏览器中下载。。我已经使用了ajax,希望接收响应文件,以便下载它

return response()->download(public_path().'/documents/'.$zipName , $zipName, $headers);

我也尝试过这种方法,但没有成功,我不知道我错过了什么

拉威尔反应:

  $downloadData = [
          'zipFile' => $zipName,
          'headers' => $headers,
          'url' => public_path('documents/').$zipName
        ];
        return response()->json(['status'=>1,'data'=> $downloadData]);
AJAX成功:

  var a = document.getElementById('zipDownload');
                       a.href  = data.data.url;
                       a.target  = '_blank';
                       a.download  = data.data.zipFile;
                       setTimeout(function() {
                         a.click();
                       }, 200);
锚正在显示文件的正确路径,并在我将其粘贴到新选项卡时进行下载。。但当我触发锚定标签时,它会显示出来
不允许加载本地资源:file:///C:/xampp/htdocs/ems/public/documents/records-20200512002210.zip

尝试在Laravel响应中使用此选项(如果您使用或类似方式访问web应用程序,其中Laravel应用程序的公共目录设置为文档根目录):

在这里,您甚至可以使用
url('/documents/'.$zipName)
route()
函数,具体取决于已设置的配置/环境变量

file:///C:/xampp/htdocs/ems/public/documents/records-20200512002210.zip是Web服务器上的文件资源,前端(JS)不应该看到它。
因此,要下载的zip文件应该相对于web应用程序的URI进行访问


在您的情况下,如果浏览器能够访问类似
http://localhost:8000/documents/.zip
http://localhost/ems/documents/.zip
,那么您就可以继续了

尝试在Laravel响应中使用此选项(如果您使用或类似方式访问web应用程序,其中Laravel应用程序的公用目录设置为文档根):

在这里,您甚至可以使用
url('/documents/'.$zipName)
route()
函数,具体取决于已设置的配置/环境变量

file:///C:/xampp/htdocs/ems/public/documents/records-20200512002210.zip是Web服务器上的文件资源,前端(JS)不应该看到它。
因此,要下载的zip文件应该相对于web应用程序的URI进行访问

在您的情况下,如果浏览器能够访问类似
http://localhost:8000/documents/.zip
http://localhost/ems/documents/.zip
,那么您就可以继续了

你能试试
header('Content-Type:'。mime_Content_-Type($filepath))以上
response()->download()
?您能试试
标题('Content-Type:'。mime_Content_Type($filepath))响应()->下载()
 $downloadData = [
          'zipFile' => $zipName,
          'headers' => $headers,
          'url' => '/documents/'.$zipName
        ];
return response()->json(['status'=>1,'data'=> $downloadData]);