douxuelv7755 2015-11-06 19:42
浏览 108

Laravel - 通过超链接打开存储在App目录中的文件?

I've setup my system so each new record created also creates a folder within the storage folder to save related documents such as PDF's.

e.g. app/storage/records/123456/document.pdf

I have the following in my controller:

$files = File::allFiles(app_path().'/storage/records/'.$record->id);

I can then show the path to the documents in the specific folder in my record view with the following:

@foreach($files as $file)
    <div>{{ HTML::link($file, basename($file)) }}</div>
@endforeach

But when I click on the link it appends the app path on to the end of the URL and obviously returns a 404.

How can I set this up to trigger a HTTP download when I click the link?

  • 写回答

1条回答 默认 最新

  • dongni3854 2015-11-07 01:20
    关注

    You will need to create a route to retrieve your file and send it with the appropriate download headers. In Laravel 5, its simplest form is:

    // routes.php
    Route::get('downloads/{record_id}/{filename}', function ($record_id, $filename)
    {
        $headers = [
            // set whatever extra download headers you want here...
        ];
        return response()->download(app_path().'/storage/records/'.$record_id.'/'.$filename, $filename, $headers);
    });
    

    You will need to adjust your HTML::link() calls to reflect the downloads route, whatever you choose to call it.

    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c