微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Laravel Nova 的文件下载中删除不需要的换行符?

如何解决如何从 Laravel Nova 的文件下载中删除不需要的换行符?

在 Laravel Nova 应用程序中,我遇到了一个奇怪的问题:每当我尝试下载文件时,第一行(0A,空行)都有一个换行符。这会损坏图像、zip 文件等。但这是什么原因造成的?

我试过/检查过:

  1. 检查关闭标签上的所有 PHP 文件(没有)
  2. 硬盘上的原始文件没有在创建时有这个额外的换行符
  3. 检查自上次发布以来的每个 PHP 文件获取正确的 UTF-8 编码
  4. 从实时服务器复制 composer.lock 并重新安装所有内容
  5. Ran composer dump,PHP artisan cache:clear,PHP artisan clear-compiled
  6. 检查自上次发布以来的所有代码更改(没有问题)
  7. 尝试过 Chrome 和 Firefox

以下是导致此错误的一些 Laravel Nova 代码

return Fields\Image::make(__('Image')),'imageStorage')
        ->rules('image',"dimensions:max_width={$image_max_width},max_height={$image_max_height}")
        ->squared()
        ->disk(Enums\Storagedisk::APP_PUBLIC_disTRIBUTORS)
        ->path(distributorPath::products($distributorId))
        ->deletable(false)
        ->prunable()
        ->onlyOnForms(); 

一个字符始终为 0A。

那么,我如何找到原因?有什么提示或策略吗?

解决方法

简短回答:换行符隐藏在路由文件中。

这个错误是大约一年前犯的,直到现在才出现,因为应用程序创建的任何输出(html / xml)都没有问题。当我尝试输出二进制文件(zip/图像)时开始出现问题。

那我是怎么发现这个bug的? die('find bug!');

对于未来的任何人:

  • 从 index.php 开始
  • die('find bug!'); 放在一处并进行测试。
  • 不要害怕将其放入供应商或库代码中。
  • 没有换行符?删除 die('find bug!'); 并将其放在下一个调用中。
  • 找到换行符了吗?所以现在你现在换行符介于两者之间。
  • 放大并找到它!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。