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
大家下载的时候都是怎么写的?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 15

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

7年前 评论
leo

目测有 php 报错

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

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

7年前 评论
leo

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

7年前 评论

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

file

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

7年前 评论

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

7年前 评论
leo

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

7年前 评论

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

7年前 评论
leo

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

7年前 评论

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

7年前 评论
leo

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

7年前 评论

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

7年前 评论
黑哈尔

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

4年前 评论
黑哈尔

找到解决方法了,

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

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

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

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