我正在制作一个PDF的zip文件,然后在浏览器中下载。.我已经使用了ajax,并且希望接收文件作为响应,以便我可以下载它。
return response()->download(public_path().'/documents/'.$zipName , $zipName, $headers);
我也尝试过这种方法,但没有奏效,idont知道我所缺少的。
Laravel回应:
$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响应中使用它(如果您正在使用http:// localhost:8000或类似的东西访问Web应用程序,其中laravel应用程序的公共目录被设置为文档根目录):
$downloadData = [
'zipFile' => $zipName,
'headers' => $headers,
'url' => '/documents/'.$zipName
];
return response()->json(['status'=>1,'data'=> $downloadData]);
在这里,您甚至可以根据已设置的配置/环境变量使用url('/documents/'.$zipName)
或route()
功能。
file:///C:/xampp/htdocs/ems/public/documents/records-20200512002210.zip
是Web服务器上的文件资源,前端(JS)应该看不到它。因此,应该相对于Web应用程序的URI访问要下载的zip文件。
就您而言,如果浏览器能够访问http://localhost:8000/documents/<zip file name>.zip
或http://localhost/ems/documents/<zip file name>.zip
,则最好继续进行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句