0

In my blade file i have attach one file to download by giving directly its path in tag. While i click on that link i have use ajax to remove that file from server,Now i can able to remove the file but i am not getting download-popup.Any one can help. Thanks in advance.

blade file code

<a href="/temp/invalidData.csv" style="position: relative;padding-left: 20px" id="invalid">InvalidData.csv</a>

ajax code

$(document).ready(function(){
    $(document).on('click','#invalid',function(){

        $.ajax({
              type:"post",
              url:'/delete-file',
              dataType:"json",
              success:function(data){
                if (data.type == "success") {

                        } else
                        {

                        }
                        return false;
        }
      });
        return false;
    });
});

controller code

public function deleteFile(){

        $file= public_path(). "/temp/invalidData.csv";

       return response()->download($file)->deleteFileAfterSend();


    }
sandip bharadva
  • 629
  • 1
  • 6
  • 19
  • You cannot use ajax to download a file, see [here](https://stackoverflow.com/a/9970672/9193055). – Remul Nov 30 '18 at 08:32
  • Possible duplicate of [Download a file by jQuery.Ajax](https://stackoverflow.com/questions/4545311/download-a-file-by-jquery-ajax) – Steven Kryskalla Nov 30 '18 at 14:27

1 Answers1

1

Use a simple anchor tag to put a get call to download and delete file e.g.:

<a style="display: none;" href="address_for_request?file={{$file_path}}" id="path"  ></a>

then using jquery invoke a click event on anchor tag or make same process with ajax call :

 (function(){
   if(jQuery('#path').length) {
        jQuery('#path')[0].click();
   }
 })();

auto invoke explained here.

and in controller simple code to download:

      if ( isset( $request->file ) ) {
            session::forget('pdf');
            session::save();
            return response()->download(storage_path($request->file))->deleteFileAfterSend(true);
        }
kshitij
  • 642
  • 9
  • 17
  • now i face another problem , i can download and also delete file but the link for download is not remove from blade file , i need to reload the page. – sandip bharadva Nov 30 '18 at 10:33
  • For that purpose you can put path in session and get path in blade with condition and only render element if exists in session and after/during dowload function remove that from session and save new session. And it will work fine on reload. like in mycode in controller for session – kshitij Nov 30 '18 at 10:54