如何使用数据表Yajra在Laravel上下载文件

时间:2019-09-23 03:15:16

标签: laravel datatables

我有一个表数据,并且正在使用数据表yajra。它正常运行。 我已添加按钮下载以下载文件。该文件类型为Pdf,并保存在数据库中。我试图建立没有数据表,它的工作原理。像这样(只是示例):

@foreach ($riwayat as $i)
                      <tr class="even pointer">
                        <td class="a-center ">{{ ++$no }}</td>
                        <td class=" ">{{ $i->users->nama}} </td>
                        <td class=" ">{{ $i->nama_surat}}</td>
                        <td class=" ">{{ $i->tanggal_terbit}}</td>
                        <td class=" ">{{ $i->penerbit}}</td>
                        <td class=" "><a href="file_str/{{ $i->file}}" download={{ $i->file}}><button class="btn btn-primary btn-md">Download</button></a></td> // its my download button and work

                      </tr>
                      @endforeach 

此下载文件正常工作,没有在“下载”上启用控制器功能和路由功能

但是当我在服务器端使用数据表构建它时。当我将光标悬停在下载按钮上时,它没有显示正确的URL。

您可以在下面看到我的代码:

public function indexDataTables()
{

    $pelatihan = Master_seminar_pelatihan::with('users')->get();

        return Datatables::of($pelatihan)
        ->addIndexColumn()
        ->addColumn('edit', function ($pelatihan) {
            return '<a href="/pelatihan/'.$pelatihan->id.'/edit" class="btn btn-xs btn-success"><i class="glyphicon glyphicon-edit"></i> Edit</a>';
        })// this edit CAN SHOW id 
        ->editColumn('download', function ($pelatihan) {
            return '<a href="file_pelatihan/'.$pelatihan->file_scan.'" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-download-alt"></i></a>';
        })// this download didnt work , this url didnt show file like file.pdf
        ->editColumn('hapus', function ($pelatihan) {

            $c = csrf_field();
            $m = method_field('DELETE');

        return "<form action='/delete1/$pelatihan->id' method='POST'>
                $c
                $m

                <button style='margin-left:10px; width: 30px;' type='submit'
                        class='btn btn-xs btn-danger delete'>
                    <i class='glyphicon glyphicon-remove-circle'></i>
                </button>
            </form>";
        })
        ->rawColumns(['hapus' => 'hapus','edit'=>'edit','download'=>'download'])

        ->make(true);

}

此下载文件功能不起作用。

2 个答案:

答案 0 :(得分:0)

尝试一下:

public function indexDataTables()
{

$pelatihan = Master_seminar_pelatihan::with('users')->get();

    return Datatables::of($pelatihan)
    ->addIndexColumn()

    ->addColumn('edit', function ($pelatihan) {
        return '<a href="/pelatihan/'.$pelatihan->id.'/edit" class="btn btn-xs btn-success"><i class="glyphicon glyphicon-edit"></i> Edit</a>';
    })

    ->editColumn('download', function ($pelatihan) {
        return '<a href="'.asset("public/yourpath/yourfile.extension") .'" class="btn btn-xs  btn-primary"><i class="glyphicon glyphicon-download-alt"></i></a>';
    })

    ->editColumn('hapus', function ($pelatihan) {
        $c = csrf_field();
        $m = method_field('DELETE');

       return "<form action='/delete1/$pelatihan->id' method='POST'>
            $c
            $m
            <button style='margin-left:10px; width: 30px;' type='submit'
                    class='btn btn-xs btn-danger delete'>
                <i class='glyphicon glyphicon-remove-circle'></i>
            </button>
        </form>";
    })

    ->rawColumns(['hapus' => 'hapus','edit'=>'edit','download'=>'download'])

    ->make(true);

}

希望对您有所帮助。

答案 1 :(得分:0)

请尝试一下, 如果使用文件系统存储,则可以使用以下代码。

public function indexDataTables()
{

$pelatihan = Master_seminar_pelatihan::with('users')->get();

return Datatables::of($pelatihan)
->addIndexColumn()

->addColumn('edit', function ($pelatihan) {
    return '<a href="/pelatihan/'.$pelatihan->id.'/edit" class="btn btn-xs btn-success"><i class="glyphicon glyphicon-edit"></i> Edit</a>';
})

->editColumn('download', function ($pelatihan) {
    return '<a href="'. \Storage::url('File path here')**strong text** .'" class="btn btn-xs  btn-primary"><i class="glyphicon glyphicon-download-alt"></i></a>';
})

->editColumn('hapus', function ($pelatihan) {
    $c = csrf_field();
    $m = method_field('DELETE');

   return "<form action='/delete1/$pelatihan->id' method='POST'>
        $c
        $m
        <button style='margin-left:10px; width: 30px;' type='submit'
                class='btn btn-xs btn-danger delete'>
            <i class='glyphicon glyphicon-remove-circle'></i>
        </button>
    </form>";
})

->rawColumns(['hapus' => 'hapus','edit'=>'edit','download'=>'download'])

->make(true);
}