ajax - 如何使用 laravel 数据表下载文件
问题描述
您好,我一直在尝试使用模式中的按钮创建下载功能,它是这样的:
index.blade.php
$('body').on('click', '.downloadMediaOrder', function(){
var id = $(this).data("id");
confirm("Do you want to download this file ?");
let url = "{{ route('media-order.download', ['id' => ':id']) }}";
url = url.replace(':id', id);
$.ajax({
url: "/MediaOrder/download/" + id,
method: 'GET',
success: function (data){
tableMediaOrder.ajax.reload();
},
error: function (data) {
console.log('Error:', data);
}
});
});
下载按钮:
<a href="javascript:void(0)" id="downloadMediaOrder" name="downloadMediaOrder" data-original-title="Download" class="btn btn-primary downloadMediaOrder" value="{{ csrf_token() }}"><i class="fa fa-save mr-1"></i>Download</a> <br></br>
路线 :
Route::get('/MediaOrder/download/{id}', 'MediaOrderController@download')->name('media-order.download');
控制器 :
public function download(Request $request)
{
$iid = $request->id;
try{
$down = MediaOrder::where('id',$iid)->firstOrFail();
$destinationPath = storage_path() .'/file/'.$down->attachment_name; // upload path
return Response::download($destinationPath);
}catch (\Exception $e){
return $e->getMessage();
}
}
我试图attachment_name
根据他们id
在数据表上下载它,但最终得到未定义的 ajax,是否有基于 id 下载文件的解决方案或替代方法?谢谢你!。
解决方案
推荐阅读
- azure - Azure 中的 ansible VM 可以查询自己的 VM 标签吗?
- asynchronous - 实现异步“优先级”分块的最佳方法是什么?
- java - 地图的分组和聚合列表
- web - 无法让 Scrapy 在 Mac Os Catalina 上工作
- java - 符合 FIPS 140-2 - Oracle 开源“jdk1.8.0_151”
- sql - SQL - 用+=连接变量while循环中的字符串
- php - Symfony - 有没有办法将实体设置为全局?
- wpf - 需要使用 WPF 中的控件模板和数据触发器更改网格中的边框颜色
- html - 禁用时如何为选择占位符提供样式?
- r - lapply函数下的Sys.time