如何解决如何从 Laravel Nova 的文件下载中删除不需要的换行符?
在 Laravel Nova 应用程序中,我遇到了一个奇怪的问题:每当我尝试下载文件时,第一行(0A,空行)都有一个换行符。这会损坏图像、zip 文件等。但这是什么原因造成的?
我试过/检查过:
- 检查关闭标签上的所有 PHP 文件(没有)
- 硬盘上的原始文件没有在创建时有这个额外的换行符
- 检查自上次发布以来的每个 PHP 文件以获取正确的 UTF-8 编码
- 从实时服务器复制 composer.lock 并重新安装所有内容
- Ran composer dump,PHP artisan cache:clear,PHP artisan clear-compiled
- 检查自上次发布以来的所有代码更改(没有问题)
- 尝试过 Chrome 和 Firefox
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 举报,一经查实,本站将立刻删除。