我正试图根据ajax请求发送的ID导出多个word文件。
因此,我使用以下脚本:
<script>
$(document).ready(function() {
$('#numero_projet').change(function() {
var id_projet = $(this).find("option:selected").data("id");
$('#generer').click(function() {
alert("hello");
var checkValues = $('input[name=casting_checked]:checked').map(function() {
return $(this).data('id');
})
.get();
var join_selected_values = checkValues.join(",");
$.ajax({
url: "generer/"+id_projet+"/"+checkValues,
type: 'get',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: {
ids: join_selected_values
},
success: function (data) { }
});
});
});
});
</script>
以及以下控制器:
public function generer()
{
if (request()->ajax()) {
$id_projet = request('id_projet');
$id_casting = request('ids');
$idsArray=explode(",",trim($id_casting,','));
if (!empty($idsArray)) {
$id_contrat = Projet_Casting::where('id_projet',$id_projet)->whereIn('id_casting',$i)->value('id_contrat');
$id_modele_contrat = Contrat::where('id_contrat',$id_contrat)->value('id_modele_contrat');
$model_file = Model_Contrat::where('id_modele_contrat',$id_modele_contrat)->value('fichier');
$templateProcessor = new TemplateProcessor('/storage/app/public/uploads/modeles_contrat/'.$model_file);
$filename= $id_contrat;
$templateProcessor->saveAs( $filename.'.docx');
return response()->download( $filename.'.docx');
}
}
}
如果 $idsArray
包含3个ID,它应生成3个word文件。
但使用这段代码,它只生成一个文档,而不是多个文档。
如果你有任何想法,请帮忙。
1条答案
按热度按时间qojgxg4l1#
不可能在一个请求中下载多个文件。您需要先压缩所有文件,然后返回下载该压缩文件的响应。