这段fc代码的工作原理很简单:
public static function File($relativeFilePath) {
if (Storage::exists($relativeFilePath) == false) {
$relativeFilePath = "/not_found.png";
}
$absoluteDiskPath = Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix();
$fullPath = $absoluteDiskPath.$relativeFilePath;
$file = File::get($fullPath);
$contentType = File::mimeType($fullPath);
$response = response()->make($file, 200);
$response->header("Content-Type", $contentType);
return $response;
}
现在,不是发送图像而是发送了错误的文件。 PHP找到图像的存储位置,然后发送图像的内容(执行var_dump将在邮递员中弹出文件内容)。
但实际上显示出一个白色小方块。
我被困住了。更新了流明,从先前的提交中恢复了代码(正在工作),并且仍然相同)。在屏幕截图中,您可以看到结果。
存储文件夹上的权限为777,以避免出现权限问题。 如果我将图像添加到公共根文件夹,然后直接访问它(HTTP服务器而不是整个Lumen框架),则会显示该图像。 我的HTTP服务器在流浪汉上是nginx
我从答案中删除了标题,其内容显示在邮递员中。尽管如此,我还是用十六进制打开它来比较两个原始文件:
响应在开头添加了一个奇怪的0x0A值。
怎么办?
答案 0 :(得分:0)
我猜图像的内容有问题,您遇到了错误。您没有看到错误,因为它试图将其显示为图像,但显示不是很成功,导致显示空白图像。
我建议您注释以下这一行:$response->header("Content-Type", $contentType);
,这样就可以返回原始结果。我的猜测是有一个错误,然后您可以修复/继续调试。
当然,当您完成操作后,就可以再次取消注释
答案 1 :(得分:0)
此问题是由于PHP文件开头的空白行引起的。
问题解决了。