关于打包下载问题

应客户需求最近在做一个批量下载但是其他问题都解决了,到了最后下载这部不知道怎么的总是报错并且在响应返回文件流,重定向到文件位置也不行,就是不下载,求大佬救命(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
一个偏向心理学即将转向产品的码农
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

是方法的问题,以下是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()就好了

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

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

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

filereturn 改成 echo 之类的试过吗

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

是方法的问题,以下是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()就好了

2年前 评论
22 2年前

设置如下响应头试试:

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

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