关于打包下载问题

应客户需求最近在做一个批量下载但是其他问题都解决了,到了最后下载这部不知道怎么的总是报错并且在响应返回文件流,重定向到文件位置也不行,就是不下载,求大佬救命(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
一个偏向心理学即将转向产品的码农
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《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()就好了

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

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

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

filereturn 改成 echo 之类的试过吗

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

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

3年前 评论
22 3年前

设置如下响应头试试:

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

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