Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
402 views
in Technique[技术] by (71.8m points)

javascript - Unable to download file in laravel ajax on button click

When I am trying to use the download button to download file in laravel ajax, it is not working properly and I am not able to download file.

Below is my code:

<button type="button" request_id="'.$data->id.'" class="btn btn-success download_request_btn" > Download </button>';

Controller:

public function downloadReport(Request $request)
    {
        $request_id = $request->request_id;
        $downloadReport = Upload::where('id', $request_id)->first();
        $upload_report = $downloadReport->upload_report;
        $headers = array(
            'Content-Type: application/pdf',
            'Content-Type: application/docx',
          );
        $url= url('storage/documents/request/'. $upload_report);
        return response()->download($url);
    }

Ajax:

$(document).on('click', '.download_request_btn', function(){
            var request_id = $(this).attr('request_id');
           console.log(request_id);
           var formData = new FormData();
            formData.append('request_id',request_id);
            jQuery.ajax({
                type: "post",
                url: site_url+"/DownloadAjax",
                data: formData,
                contentType:false,
                processData:false,
                success: function (res) {

                }
            });
        });
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Just to pseudo-code it up with trusting your data is coming back as desired I think you need to trigger the download in your success callback with a variation of the following (may need to adjust to your need):

$(document).on('click', '.download_request_btn', function(){
    var request_id = $(this).attr('request_id');
    console.log(request_id);
    var formData = new FormData();
    formData.append('request_id',request_id);
    jQuery.ajax({
        type: "post",
        url: site_url+"/DownloadAjax",
        data: formData,
        contentType:false,
        processData:false,
        success: function (res) {
            const data = res;
            const link = document.createElement('a');
            link.setAttribute('href', data);
            link.setAttribute('download', 'yourfilename.extensionType'); // Need to modify filename ...
            link.click();
        }
    });
});

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...