[下载带有laravel和axios的txt文件

问题描述 投票:0回答:1

你好,那里希望您会做的很好。我想从laravel控制器中即时下载生成的txt文件,我已经搜索了很多,但找不到任何解决方案。请帮忙,我将非常感谢。

带有axios请求的刀片代码

submitHandler:function(form,e){
            var btn=document.querySelector("#BtnSubmit");
            btn.style.display="none";var img=document.createElement("img");
            img.setAttribute("src",base_url+'front/images/loading.gif');
            var loader=document.querySelector("#loader");loader.appendChild(img);
            var url="<?php echo route('database.export-txtProcess');?>";
            var cur_url="<?php echo route('database.export-txt');?>";

            //var tblExportSelect  = $("#tblExportSelect").val();


            var pushArray = [];
            $.each($("#tblExportSelect option:selected"), function(){
            pushArray.push($(this).data("id"));
            });

            var data  = new FormData();

            data.append('tblExportSelect',pushArray);


            //$("#tblExportSelect").val(selected);


            axios({
                method: 'POST',
                url: url,
                data: data,
              })
            .then(function(res){
              console.log(res);
            })
         e.preventDefault();
      }
   });

控制器方法

public function exportTxtProcess(Request $request){

      /*dd($request->tblExportSelect);*/

       $tables  = explode(",", $request->tblExportSelect);

        $destinationPath = public_path('/');

        $result;

       foreach ($tables as $table) {
          $outputs   =  DB::select("SELECT * FROM $table");

          $today   = date("Y-m-d");
          $fileName  = $table."-".$today;
          $fp = fopen($destinationPath . "$fileName.txt","wb");

          foreach ($outputs  as $output) {
            $output  = (array)$output;

            @array_shift($output);

            $removeUserId  = @$output['user_id'];
            $created_at    = @$output['created_at'];
            $updated_at    = @$output['updated_at'];



            if (($key = array_search($removeUserId, $output)) !== false) {
                unset($output[$key]);
            }
            if (($key1 = array_search($created_at, $output))) {

                unset($output[$key1]);
            }

            if (($key2 = array_search($updated_at, $output))) {

                unset($output[$key2]);
            }

            if (is_null($created_at) OR $created_at == '') {
                unset($output['created_at']);
            }

            if (is_null($updated_at) OR $updated_at == '') {
                unset($output['updated_at']);
            }


            $netResult = $this->getTableFields($table,$output);

            fwrite($fp,$netResult);

          }

          $result = fclose($fp); 
       }
       /*$arr = array(['Good' => true,'message' => 'Data has been successfully imported.'], 200);
                    echo json_encode($arr);*/
       if ($result) {
        $pathToFile  = $destinationPath . "$fileName.txt";

        $downloaded = response()->download($pathToFile)->deleteFileAfterSend();


       }
    }

我想下载如上创建的txt文件,而不是在控制台中流式下载。

提前感谢

laravel laravel-5 download axios jquery-file-upload
1个回答
0
投票

您必须传递标题。最重要的是,您没有返回响应。


        return response()->download($pathToFile, 'filename.txt',[
              'Content-Type' => 'application/txt',
           ])->deleteFileAfterSend();

© www.soinside.com 2019 - 2024. All rights reserved.