关于打包下载问题

应客户需求最近在做一个批量下载但是其他问题都解决了,到了最后下载这部不知道怎么的总是报错并且在响应返回文件流,重定向到文件位置也不行,就是不下载,求大佬救命(Dcatadmin+laravel 9+php8.0)

响应
关于打包下载问题

业务代码
关于打包下载问题

标头

常规

请求 URL: https://yyjkds.fareast-edu.net/background/dcat-api/action
请求方法: POST
状态代码: 200 
远程地址: 118.190.107.83:443
引用站点策略: no-referrer

响应标头

accept-ranges: none
cache-control: public
content-disposition: attachment; filename=161652865177.file.zip
content-length: 4251
content-type: application/zip
date: Wed, 18 May 2022 09:12:57 GMT
last-modified: Wed, 18 May 2022 09:12:57 GMT
server: nginx
set-cookie: XSRF-TOKEN=eyJpdiI6InZHVHpDcit3YkJZYjYzcGErU0JaOHc9PSIsInZhbHVlIjoibmsrUVVhSWN4Q28wVzJseDZQQ3JPY3FYaUU5UVBFaXBncFd5aGpZY3FJK3pTYXpjM0dRMEV0Nnc2NmpMcGI2QnFvVWhsZzFsRWtIdkhnK1k4b1cvdUI0T2Y0TWRXbnZ4WWxVQUNKa3o3dnFTNmZWZVYvV01pd1R0R0NsKzIrOFQiLCJtYWMiOiIyNmNiN2I1YzgwMTA2ZDZmZmIzMzcyYzc4YTljNmU2MjhhYTI5ZGRhNzAwMzYyNmIwOWE4NWMxMjA4NjM3Yjk0IiwidGFnIjoiIn0%3D; expires=Wed, 18-May-2022 11:12:57 GMT; Max-Age=7200; path=/background; samesite=lax
set-cookie: _session=eyJpdiI6IlcrYWtIbWtPekVRbjcvVnhqbjFPQUE9PSIsInZhbHVlIjoiMzNPcHp0Mkk1WE85bTlnN0VjaU5ZTnB5RnVLMEpUYXJEODZvR2lBNU5MR2h5QndZZXZWeXUzMThpbS80cDB6Y0N4ZHg5alErTi94SjVDUGhPdzhyem1Za3hJckNRTk5BVFJoQXJad0dDOTVFa1V0T2x2OHhsYUh6NTdyMVJoeXkiLCJtYWMiOiIzYjhmNTM2NDNkMDhhZDI0MjIzNjI3OWQ1MDVhNjQzZjEzOWI1YzQ3MTNkN2IyYWFhZGI4YzNlYmE0NmNmNWViIiwidGFnIjoiIn0%3D; expires=Wed, 18-May-2022 11:12:57 GMT; Max-Age=7200; path=/background; httponly; samesite=lax
status: 200
strict-transport-security: max-age=31536000

请求标头

:authority: yyjkds.fareast-edu.net
:method: POST
:path: /background/dcat-api/action
:scheme: https
accept: '*/*'
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
content-length: 100
content-type: application/x-www-form-urlencoded; charset=UTF-8
cookie: XSRF-TOKEN=eyJpdiI6IjkvS2JWcTJlUmwrYi9wNkEvSkJ6ZGc9PSIsInZhbHVlIjoiNm0rU01qdmlzMlk5c3RQREVlUlIxZ3RHSTVOYmthbE9mKzRmNm96T29jaTlFNWwrZHdqUGdtTkVqUklQZFVONjhiWUtwMmdueFRrUWZQb0FJRTc1V0dmR1NNaXR4cDYrMHhrbUtEQ1k3QlNMdzhqbzNuVy9TNEdJd1puLzFqc1ciLCJtYWMiOiJmNDI3Yzg0YWVmOGNlYzI4N2VhMDlhMjRjMjU3OWUzMTI1MDM5NzQyM2JlMTUzNzlhMTdlMzdjZTMyNmZhYjE2IiwidGFnIjoiIn0%3D; _session=eyJpdiI6IkdSK0V5QmpjR2xyVUZZS1ZoUG1GYXc9PSIsInZhbHVlIjoiRTlYb2xmc3RlRUE4ZTZtRDRhRE1GZ3h1RUN2cGVkVGx1UGtSbUI5VGQ0bmVSbjF6eW1JakdYa1NvT3dVSzlXS2o1NHZ3WThDREhkb3lPRjQ3YS9nay9sWHZMT2ZqOEZocCtZZWtsOEx2NjZsd056S2NpVVFzODR4ZE5nK3lkZUgiLCJtYWMiOiJhZjQ1OTQzZjllMDgxYTVjY2VhZWQ3NDk0YjA2YzU2OTU4NWI3NzcwMWMzZjJiZDZhZDBjMzQyZjFmNWM1NDViIiwidGFnIjoiIn0%3D; XSRF-TOKEN=eyJpdiI6InJzYkV4b082WE9JVkprVTBYeTVma3c9PSIsInZhbHVlIjoiVWQzMzB6NVVIbCtkNEphV2NobzFMRU92Ui9NV3phQmJBYjhsdmg5bXhEQkdQaHRPZ0owZTZtUGxLb1UzRTViRG9EL3RQNzVpVC9mdzc5d0xmeWZrRXpDVnl4ekV2Tm9qek5XMnFlVS8rd3pXUVAyOHhld3MrNVFaaUN4S1JWRHUiLCJtYWMiOiI2ODFmMDE2ZGIxYTAwOTY2NTgzODhjMzBlMDNhNzNjNjY3ZjdhYTY0MTFmM2Y1Y2Y5NGUwM2Q0MDRiZmYwNTUxIiwidGFnIjoiIn0%3D; _session=eyJpdiI6InAyM3o2WS8yQThrS2VtUDdVbDhBRkE9PSIsInZhbHVlIjoiT1VsRzZGNlMycnRvN1NFR1lBTnZWN2FmSUFsbk5idDB4cGdJblNhdUYrNHg2bjlxYU81WTNkcjd1YTlyZmN6blRONHJqeFlnKzVRUmRCbXRMajdmMDkrTVBaN1JrQ2QwUXAzclhtQmllVFB4cm5RRVM0cGxoVFdzRFN4MlNZWDUiLCJtYWMiOiJmNmRhMTc3MDE5ZDI4ZDFjZTA3MGRjMGEyY2QxYTljOWE4Nzk4NGY2ZDkzOTQwYjNjZDYyZDE2NWIzYWUyNTUwIiwidGFnIjoiIn0%3D
origin: https://yyjkds.fareast-edu.net
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
x-csrf-token: 1ny0hVUuHXDcGYP7MSQtL2LlNwOdtKAhOmOPB8ms
x-requested-with: XMLHttpRequest

表单数据

_action: App_Admin_Actions_Grid_Download
_key[]: 1
_token: 1ny0hVUuHXDcGYP7MSQtL2LlNwOdtKAhOmOPB8ms
理想的光照不到现实的黑暗,明灯是黑夜中的奢侈品。如果你接受不了真实生活千疮百孔的消极,那么,请移步儿童区...
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

是方法的问题,以下是response()->Download()

 public function download($file, $name = null, array $headers = [], $disposition = 'attachment');

    /**
     * Return the raw contents of a binary file.
     *
     * @param  \SplFileInfo|string  $file
     * @param  array  $headers
     * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
     */

换成$this->response()->Download()就好了

1年前 评论
22 1年前
讨论数量: 16

content-type: application/x-www-form-urlencoded; charset=UTF-8 改成 application/zip 试试

1年前 评论
working (楼主) 1年前
working (楼主) 1年前
22 (作者) 1年前
working (楼主) 1年前
22 (作者) 1年前
working (楼主) 1年前
22 (作者) 1年前
working (楼主) 1年前
working (楼主) 1年前

filereturn 改成 echo 之类的试过吗

1年前 评论
working (楼主) 1年前

是方法的问题,以下是response()->Download()

 public function download($file, $name = null, array $headers = [], $disposition = 'attachment');

    /**
     * Return the raw contents of a binary file.
     *
     * @param  \SplFileInfo|string  $file
     * @param  array  $headers
     * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
     */

换成$this->response()->Download()就好了

1年前 评论
22 1年前

设置如下响应头试试:

Header ("Content-type:application/octet-stream"); 
Header ("Accept-Ranges:bytes");
Header ("Accept-Length:");
1年前 评论
working (楼主) 1年前

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