首页 > 解决方案 > 如何使用 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 下载文件的解决方案或替代方法?谢谢你!。

标签: ajaxlaravel

解决方案


推荐阅读