在我的laravel
应用中,我的公共路径中有一个zip文件,我想使用ajax下载该文件,而不返回zip文件并抛出错误,图像中显示的任何人都可以帮助解决此问题,谢谢。 / p>
$files = glob(public_path('uploads/download-images'));
\Zipper::make(public_path('uploads/product_images.zip'))->add($files)->close();
return response()->download(public_path('uploads/product_images.zip'));
这是ajax
var join_selected_values = allVals.join(",");
$.ajax({
url: $(this).data('url'),
type: 'POST',
data:'_token = <?php echo csrf_token() ?>',
data: 'ids='+join_selected_values,
success: function (data)
{
window.location = data;
alert('Seccussfully Downloaded');
},
error: function (data) {
alert(data.responseText);
}
});
答案 0 :(得分:0)
我不确定,但这可能与您必须为响应设置header configuration
有关。当然,您必须将内容类型更改为所需的一种。希望对您有所帮助。
{
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, PATCH, DELETE',
'Access-Control-Allow-Headers' => 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization , Access-Control-Request-Headers',
'Content-Type' => 'application/pdf'
];
return response()->download(filepathHere, nameHere, $headers);
}
还请确保:
管理文件下载的Symfony HttpFoundation要求下载的文件具有ASCII文件名。
答案 1 :(得分:0)
据我了解,您无法使用Ajax调用返回下载响应。解决方法是,不要使用ajax请求下载。只需执行传统要求即可。因为它返回下载响应,所以浏览器将自动打开下载对话框,因此类似于不刷新。