我正在制作一个PDF压缩文件,然后在浏览器中下载。.我已经使用了ajax,并且希望接收文件作为响应,以便我可以下载它。
return response()->download(public_path().'/documents/'.$zipName , $zipName, $headers);
this is the response i m getting
我也尝试过这种方法,但是它不起作用,因为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
答案 0 :(得分:0)
尝试在Laravel响应中使用它(如果您正在使用http://localhost:8000或类似的东西访问Web应用程序,其中laravel应用程序的公共目录被设置为文档根目录):
i1 <- with(A, as.logical(ave(as.numeric(Dates), Event,
FUN = function(x) all(diff(x) == 1))))
A[i1,]
根据所设置的配置/环境变量,您甚至可以在这里使用 $downloadData = [
'zipFile' => $zipName,
'headers' => $headers,
'url' => '/documents/'.$zipName
];
return response()->json(['status'=>1,'data'=> $downloadData]);
或url('/documents/'.$zipName)
函数。
route()
是Web服务器上的文件资源,前端(JS)应该看不到它。
因此,应该相对于Web应用程序的URI访问要下载的zip文件。
对于您来说,如果浏览器能够访问file:///C:/xampp/htdocs/ems/public/documents/records-20200512002210.zip
或http://localhost:8000/documents/<zip file name>.zip
之类的东西,那么您可以继续进行下去。