首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自ajax的PHP函数调用-下载文件

来自ajax的PHP函数调用-下载文件
EN

Stack Overflow用户
提问于 2018-03-04 17:34:09
回答 1查看 469关注 0票数 0

我正在尝试使用Ajax & PHP函数来下载文件。我的目标是使用Ajax将变量从Datatable发送到PHP函数。PHP函数将在我的存储中搜索并下载该文件。

这不管用。当我使用URL时,我可以下载文件。但是当我用AJAX触发它时,它不工作。

我想创建一个PHP函数,它将接收文件名并生成HTML按钮的下载链接。(显示在数据表中)

Ajax:

代码语言:javascript
运行
复制
       //download button
    $('#files').on('click', 'button#download',function (ref) {
        var data = table.row($(this).parents('tr')).data();
        var file_name=data.filename;
        ref.preventDefault();
      //  alert(data.filename);
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.ajax({
            type: 'POST',
            datatype:'binary',
            url: "/download?"+data.filename,
            success: function(result){
                console.log(result);
            }
        });
    });

PHP:

代码语言:javascript
运行
复制
    public function getDownload(){
    $tmpfile='1520001503b1.png';
   $sd= DB::table('files')
        ->where('filename',$tmpfile)
        ->get();


    $myFile = public_path("uploads/1520001503b1.png");
    $headers = ['Content-Type: application/png'];
    $newName = 'bla'.time().'.png';


    return response()->download($myFile, $newName, $headers);

}

路由:

代码语言:javascript
运行
复制
Route::match(['get', 'post'], '/download','FilesController@getDownload');
EN

回答 1

Stack Overflow用户

发布于 2018-03-04 19:06:58

据我所知,你不能从一个直接的ajax请求下载文件,你可以返回一个动态下载url到ajax响应,然后触发浏览器位置的改变,如下所示的ajax成功函数。

代码语言:javascript
运行
复制
location.href = 'download.php';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49093940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档