如何将大文件从 S3 流式传输到 laravel 视图

2024-02-08

我大部分时间都在工作,但很难完成它。

现在我有一个简单的路线:

Route::get('file/{id}/', 'FileController@fileStream')->name('file');

该路由连接到 FileController 中的一个操作:

public function fileStream($id){

    $audio = \App\Audio::where('id', $id)->first();

    $client = S3Client::factory([
        'credentials' => [
            'key'    => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
        ],
        'region' => env('S3REGION'),
        'version' => 'latest',
    ]);


    // Register the stream wrapper from an S3Client object
    $client->registerStreamWrapper();

    if ($stream = fopen('s3://[bucket_name]/'. $audio->audio_url, 'r')) {
        while (!feof($stream)) {
            echo fread($stream, 1024);
        }
        fclose($stream);
    }    
}

这适用于浏览器:如果我转到 url:/file/1,它会查找正确的文件,并在干净的浏览器窗口中得到:

然后在我看来,我尝试输出如下音频:

   <audio>
      <source src="{{ url('file', ['id' => $section->id]) }}" type="{{ $section->audio_mime_type}}"></audio>
   </audio>

但没有玩家将输出输出到屏幕上。

TIA


你应该使用 Laravel流式响应

return response()->streamDownload(function () use ($audio) {
    if ($stream = fopen('s3://[bucket_name]/'. $audio->audio_url, 'r')) {
        while (!feof($stream)) {
            echo fread($stream, 1024);
            flush();
        }
        fclose($stream);
    }    
}, 'file-name.ext');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将大文件从 S3 流式传输到 laravel 视图 的相关文章

  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 优雅地处理没有数据的 amcharts

    我想知道我的 dataProvider 是否为空 amCharts绘制时默认为null 我怎样才能动态地处理它 var chart AmCharts makeChart chartdiv theme none type serial dat
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一

随机推荐

  • 如何在没有 if 语句的情况下做出决定

    我正在学习 Java 课程 但我们还没有正式学习 if 语句 我在学习的时候看到这个问题 编写一个名为 pay 的方法 它接受两个参数 一个代表助教工资的实数 一个代表助教本周工作时数的整数 该方法应该返回付给TA多少钱 例如 调用 pay
  • @NSManaged 是做什么的?

    我在不同的场合都遇到过这个关键词 我有点知道它应该做什么 但我真的想更好地理解它 我注意到了什么 NSManaged 不是基于文档 而是通过重复使用 它神奇地取代了键值编码 大致相当于 dynamic在 Objective C 中 我不太了
  • 如何在 Haskell 中安装旧版本的 base

    我已经安装了Haskell平台 并且有7 10 3版本的ghci 其中有4 8 2 0版本的base 我需要安装gloss 1 8 哪个需要base 4 7 基础版本 我的问题是 当我已经有了新版本时 如何安装这个旧版本 是否可以 或者我必
  • ms-access:通过打印来填写申请表

    我将打印访问报告 该报告不会印刷成普通的白皮书 它将打印在带有复选框和字段的纸张上 我需要根据访问数据打印这些复选框和字段 有没有任何库可以让这变得更容易 是否有一个功能可以帮助在特定坐标上打印 请注意 我需要在数千份表格上打印 并且我必须
  • 使用准备好的语句后 SELECT LAST_INSERT_ID() 返回 0

    我正在使用 MySQL 和准备好的语句来插入BLOB记录 jpeg 图像 执行准备好的语句后 我发出一个SELECT LAST INSERT ID 它返回 0 在我的代码中 我在执行命令后放置了一个断点 并在 MySQL 命令 监视器 窗口
  • 为什么 Chrome 开发工具显示 200 状态代码而不是 304

    当我用 Chrome 测试缓存处理中的奇怪行为时 我问了一些关于它的问题 here https stackoverflow com questions 67016037 chrome doesnt send if none match he
  • Discord.js V12 粗鲁言语过滤器不起作用

    所以我添加了一个粗鲁的单词过滤器 每当有人说这个单词 小写或大写 时 它就会删除他们的消息并回复一些内容 然后回复会在几秒钟内被删除 这是我当前的代码 但它不读取rudeWords当我在聊天中写下任何粗鲁的话时 它不会做任何事情 clien
  • Rails4:康康舞还是康康康舞?使用 has_secure_password

    我正在尝试实现某种类型的用户 以便用户可以编辑数据 而其他用户只能读取 user rb class User lt ActiveRecord Base has secure password validates presence of em
  • AVAudioRecorder 内存泄漏

    我希望有人能在这件事上支持我 我一直在开发一个应用程序 该应用程序允许最终用户录制一个小音频文件以供以后播放 并且正在测试内存泄漏 当 AVAudioRecorder 的 停止 方法尝试关闭其正在录制的音频文件时 我仍然经常遇到内存泄漏 这
  • create-react-app 返回错误:执行时找不到模块“react-scripts/scripts/init.js”

    当我尝试使用 npm 和yarn 创建一个 React 项目时 它显示以下错误 我尝试重新安装节点并确保它是最新的 以及通过运行 npm install g create react app latest 来创建 react app 我还删
  • glFlush() vs [[self openGLContext]lushBuffer] vs glFinish vs glSwapAPPLE vs aglSwapBuffers

    使用 NSOpenGLView 时有几个类似的 OpenGL 操作 glFlush self openGLContext flushBuffer glFinish glSwap苹果 egl交换缓冲区 何时应该使用其中的每一个 在示例应用程序
  • 有没有办法可以检测图像方向并将图像旋转到直角?

    我正在制作一个修复扫描文档的脚本 现在我需要一种方法来检测图像方向并旋转图像 以便其旋转正确 现在我的脚本不可靠而且不够精确 现在我寻找一条线 它会旋转它正确看到的第一条线 但这几乎不起作用 除了一些图像 img before cv2 im
  • intellij idea - 错误:java:无效源版本 1.9

    我正在尝试运行我的 JSQL 解析器类 但是我得到了Error java invalid source release 1 9 我尝试跟随这个答案 https stackoverflow com a 42650624 7327018 我更改
  • Spring MVC 不记录所有异常

    我将 Spring MVC 设置为使用公共日志记录来记录异常 但发现某些运行时异常没有被记录 这是 spring 提供的默认异常解析器的 bean 配置
  • Firebase 多语言密码重置电子邮件

    大家好 Firebase 及其所有出色功能 提供了一项服务 使经过身份验证的用户可以重置其密码 但这项服务只考虑一种文本 仪表板上定义的文本 是否可以用多种语言获得此内容 我需要这个功能 Firebase 朋友 因为我想你会看到这个问题 你
  • 无法让elasticsearch服务在ubuntu 17中运行?

    我按照此处的步骤安装并让 elasticsearch 工作 https www digitalocean com community tutorials how to install and configure elasticsearch
  • 使用 Rapids.ai 版本 0.11+ 将 cuDF 和 cuML 安装到 Colab 中

    我正在尝试将带有 cuDF 和 cuML 的 Rapids 库安装到 Colab 会话中 并根据此示例执行代码 从在 Google Colab 笔记本上安装 RAPIDS 库 https stackoverflow com question
  • 列表回发时绑定困难

    我很难回发输入的新数据 尽管在提交之前对数据进行了更改 但发送到视图的数据似乎仍被发送回控制器 我的代码如下 控制器 公共类 GroupRateController 控制器 获取 GroupRate public ActionResult
  • WPF 访问打开的打印对话框并关闭它们

    我有一个 WPF 应用程序 需要在 5 分钟不活动后注销用户 但是如果用户打开任意页面的打印对话框 并且5分钟内没有触摸屏幕 即使我注销用户并清除所有子元素 打印对话框仍然保留在 WPF 表单顶部 并且有人可以来继续打印用户停留的页面 我尝
  • 如何将大文件从 S3 流式传输到 laravel 视图

    我大部分时间都在工作 但很难完成它 现在我有一个简单的路线 Route get file id FileController fileStream gt name file 该路由连接到 FileController 中的一个操作 publ