繁体   English   中英

无法通过Ajax调用返回laravel下载

[英]Cannot return a laravel download via ajax call

我希望用户下载文件,它实际上并不需要通过Ajax进行下载,但这是我发现的最简单的方法,但是它不起作用。

这是我正在调用的Controller中的方法:

  public function download(Request $request) 
  {
      $dir = $request->get("directory");
      return response()->download($dir);
  }

这是我的ajax函数:

function download(diretorio) {

    $.ajax({
      url: "/panel/download",
      data: {_token: jQuery(".token").val(), diretorio: diretorio},
      success: function(e) {

      }
    }).done(function(e) {  

    });
}

在此追加内部调用此函数:

$('#uploads tbody').append("<tr><td>" + fileName + "</td> <td><a class='btn btn-success' href='' onclick=\"download('" + item + "')\">Download</button></td></tr>");
    });

这是我的路线,它位于一个名为panel的组内:

Route::get('/download/', ['as' => 'files.download', 'uses' => 'Panel\ClientController@download']);

我的第一个问题是:是否可以将这个调用从ajax调用为laravel的下载响应?

第二个问题:我不知道如何替换到laravel控制器的路由的ajax调用,可能吗?

谢谢!

对的,这是可能的。 不过,这仅与Laravel有关。 试试这个例子:

HTML :(只需在此处调用您的GET路线)

<a href="/download/">download file(s)</a>

下载功能

public function download() 
{
      // $pathToFile : set to what you need
      return Response::download($pathToFile); 
}

由于目录路径参数带有斜杠,因此我认为路由需要其他参数。 因此,我决定不传递整个目录路径,而仅传递ID和文件名。 所以我的路线变成了这样:Route :: get('/ download / {id} / {fileName}',['as'=>'files.download','uses'=>'Painel \\ ClienteController @ fazerDownload'] );

而且有效。 感谢您的回答和努力!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM