如何使用 laravel 响应在 ajax 成功下载文件
how to download file in ajax success using laravel response
我正在制作一个 PDF 的 zip 文件,然后在浏览器中下载它。我已经使用了 ajax 并希望收到文件作为响应,以便我可以下载它。
return response()->download(public_path().'/documents/'.$zipName , $zipName, $headers);
this is the response i m getting
我也试过这个方法,但是没有用,不知道我错过了什么。
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 或类似的东西访问网络应用程序,其中设置了 laravel 应用程序的 public 目录作为文档根目录):
$downloadData = [
'zipFile' => $zipName,
'headers' => $headers,
'url' => '/documents/'.$zipName
];
return response()->json(['status'=>1,'data'=> $downloadData]);
在这里你甚至可以使用 url('/documents/'.$zipName)
或 route()
函数,具体取决于已设置的 configurations/environment 个变量。
file:///C:/xampp/htdocs/ems/public/documents/records-20200512002210.zip
是webserver上的文件资源,前端(JS)应该是看不到的。
因此,您要下载的 zip 文件应该相对于 Web 应用程序的 URI 进行访问。
在您的情况下,如果浏览器能够访问 http://localhost:8000/documents/<zip file name>.zip
或 http://localhost/ems/documents/<zip file name>.zip
之类的内容,那么您可以继续下一步。
我正在制作一个 PDF 的 zip 文件,然后在浏览器中下载它。我已经使用了 ajax 并希望收到文件作为响应,以便我可以下载它。
return response()->download(public_path().'/documents/'.$zipName , $zipName, $headers);
this is the response i m getting
我也试过这个方法,但是没有用,不知道我错过了什么。
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 或类似的东西访问网络应用程序,其中设置了 laravel 应用程序的 public 目录作为文档根目录):
$downloadData = [
'zipFile' => $zipName,
'headers' => $headers,
'url' => '/documents/'.$zipName
];
return response()->json(['status'=>1,'data'=> $downloadData]);
在这里你甚至可以使用 url('/documents/'.$zipName)
或 route()
函数,具体取决于已设置的 configurations/environment 个变量。
file:///C:/xampp/htdocs/ems/public/documents/records-20200512002210.zip
是webserver上的文件资源,前端(JS)应该是看不到的。
因此,您要下载的 zip 文件应该相对于 Web 应用程序的 URI 进行访问。
在您的情况下,如果浏览器能够访问 http://localhost:8000/documents/<zip file name>.zip
或 http://localhost/ems/documents/<zip file name>.zip
之类的内容,那么您可以继续下一步。