laravel - 如何使用 Datatables Yajra 在 Laravel 上下载文件
问题描述
我有一个表数据,并且正在使用数据表 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);
}
此下载文件功能不起作用。
解决方案
尝试这个 :
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);
}
我希望这可以帮助你。
推荐阅读
- c++ - 如何在 doxygen 中将成员类型覆盖为另一种类型
- javascript - 如何使 TextInput 只接受最多 2 个小数位的最大值?
- c# - 出现错误:协议消息包含无效标签(零),尽管字节完全相同
- cryptography - 任何人都知道如何搭建从 ERC20 代币到 BEP20 代币的桥梁
- python - 日期时间格式问题 Python
- python - 仅限 Spyder:asyncio - 无法关闭正在运行的事件循环
- php - 1062 键 'pim_catalog_completeness.PRIMARY' 的重复条目 '2147483647'
- c# - 如何使用 FileValidationAttribute 验证文档类型?
- javascript - 键盘没有在 iPhone 上自动打开
- linux - 在 Linux 中为 Delphi 应用程序使用 sctp_recvmsg() 和 epoll 实现 SCTP 功能时面临的问题