如何使用laravel响应在ajax中成功下载文件
我正在制作PDF的zip文件,然后在浏览器中下载。。我已经使用了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
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]);