首页 > 解决方案 > 使用 laravel 下载和删除文件时弹出不来

问题描述

在我的刀片文件中,我通过在标签中直接给出其路径来附加一个文件以供下载。当我单击该链接时,我使用 ajax 从服务器中删除该文件,现在我可以删除该文件,但我没有下载弹出窗口。任何人都可以提供帮助。提前致谢。

刀片文件代码

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

ajax代码

$(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;
    });
});

控制器代码

public function deleteFile(){

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

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


    }

标签: phphtmllaravel

解决方案


使用简单的锚标记来调用下载和删除文件,例如:

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

然后使用 jquery 调用锚标记上的单击事件或使用 ajax 调用进行相同的过程:

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

自动调用解释here。

并在控制器中下载简单代码:

      if ( isset( $request->file ) ) {
            session::forget('pdf');
            session::save();
            return response()->download(storage_path($request->file))->deleteFileAfterSend(true);
        }

推荐阅读