response->download () 下载的文件显示损坏. ?

public function fileDownload($id)

{
    $pathToFile = AttachmentModel::where('id',$id)->first();    
    //文件路径
    $pathToFile = $pathToFile['url'];

    return response()->download($pathToFile);

}

download($file,$filename,$headers)
参数也都尝试过传 依然不好用

上传的文件可以正常打开 没有任何影响

但是下载的文件基本都显示文件损坏
file
file
大家下载的时候都是怎么写的?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 15

是我描述的不清楚么。。。。。。

6年前 评论
leo

目测有 php 报错

  1. 检查日志
  2. 用文本的方式打开下载的文件,看看最下方有没有报错
6年前 评论

@leo 并没有报错 txt文件只有英文是正常的 其他都是乱码
别的文件打开最后几行是这样的
file

6年前 评论
leo

在 storage 里的文件是正常的?上传一个只有纯文本的文件看看会怎么样

6年前 评论

@leo 这是txt的 所有的英文代码内容都是正确的 乱码是我的中文注释

file

download的第三个参数headers应该怎么传>

6年前 评论

@leo 上传到服务器的文件是正常的 都可以正常打开
下载之后就出现文件损坏了

6年前 评论
leo

@哈萨凯 检查一下有没有用了什么 middleware 会修改输出的,还有就是看看 nginx 那边有没有类似行为的东西

6年前 评论

@leo 用的是apache 还有是不是header没写的原因

6年前 评论
leo

@哈萨凯 应该和 header 没有关系,在本地开发环境也这样?

6年前 评论

@leo 是的 服务器是IIS7 都出这个问题

6年前 评论
leo

@哈萨凯 那肯定是代码问题了,检查 middleware 吧

6年前 评论

@leo 试了下添加header参 也不行 middleware怎么检查0.0

6年前 评论
黑哈尔

@哈萨凯 你好,你这个问题最后怎么解决的,我也碰到同样的问题。

4年前 评论
黑哈尔

找到解决方法了,

$response = Storage::download($media->path);
ob_end_clean();
return $response;

方法来自于 Can't open file downloaded via response()->download() 的最后一条答案。

4年前 评论
夜雨79520 2个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!