Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重定向后的nginx php下载文件不工作_Php_Nginx_Downloadfile - Fatal编程技术网

重定向后的nginx php下载文件不工作

重定向后的nginx php下载文件不工作,php,nginx,downloadfile,Php,Nginx,Downloadfile,要将页面重定向到文件 function downloadFile($url) { ... // save info to database $path = ..; // checking if the file is on the local server if(empty($path) === false) { // download file from local server - it works header("Cont

要将页面重定向到文件

function downloadFile($url) {
    ... // save info to database
    $path = ..; // checking if the file is on the local server

    if(empty($path) === false) {
        // download file from local server - it works
        header("Content-Description: File Transfer");
        header("Content-Type: application/octet-stream");
        header("Content-Disposition: attachment; filename=\"". basename($path) ."\"");
        readfile($path);
        exit;
    }

    // downloading a file from another server - it does not work, $url is 100% good
    header("Location: " . $url);
    exit;
}
但该文件不会在屏幕上抛出,我只在“网络”选项卡中看到该文件

情商:

并从另一台服务器重定向到页面

...download_file?id=123 // status 302
...file.pdf // status 302
...file.pdf // status 200
最后一页的页眉

HTTP/1.1 200 OK
Date: Wed, 30 Dec 2020 15:45:21 GMT
Server: Apache
Last-Modified: Wed, 30 Dec 2020 16:38:38 GMT
ETag: "1a8f32-5b7af7b443bf7"
Accept-Ranges: bytes
Content-Length: 1740594
Content-Disposition: attachment
Content-Type: application/force-download
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
为什么不在屏幕上显示文件? 为什么它不开始下载?
工具中只有信息(选项卡网络)

没有在页面上显示文件,因为您需要更改页面的标题来显示文件,这可能不是nginx的问题,而是PHP的问题(因为我们没有太多代码来分析您所问的这种情况)


无论如何,我鼓励你编辑你的问题,尝试给我们更多的解释和一些代码示例,以便我们分析它并给你一个更简洁的答案。

没有在页面上显示文件,因为你需要更改页面标题来显示它,这可能不是nginx的问题,而是PHP的问题(因为我们没有太多的代码来分析您所问的这种情况)


无论如何,我鼓励您编辑您的问题,尝试给我们更多的解释和一些代码示例,以便我们对其进行分析并给您一个更简洁的答案。

解决了,正如我所写的,问题只是chrome,冲突的问题

“@PaoloVeronelli-Chrome阻止静态内容加载,如果它是通过HTTP提供的,那么当网站通过HTTPS加载时。它可能看起来像Firefox没有这样做。-Frederik Nielsen 2月14日15:51”


感谢大家的帮助

解决了问题,正如我所写的,问题只是chrome,冲突的问题

“@PaoloVeronelli-Chrome阻止静态内容加载,如果它是通过HTTP提供的,那么当网站通过HTTPS加载时。它可能看起来像Firefox没有这样做。-Frederik Nielsen 2月14日15:51”


感谢所有人的帮助

如果您直接访问文件的url会发生什么?是否下载?是的,文件正在下载如果您直接访问文件的url会发生什么?是否下载?是的,文件正在下载后编辑,我还可以添加什么?我没有在重定向之前添加任何额外的标题,因为它们似乎不存在对我来说是必要的。因为这是一个重定向,我觉得最后一页的标题是最重要的(我对它没有影响)我尝试用readfile下载此文件,但该文件是在1.1上剪切的GB@dominik什么?pdf文件大小大于1.1GB???是另一个zip文件的示例,pdf max~100MB我想我发现答案是经过编辑的,我还可以添加什么?我没有在重定向之前添加任何其他标题,因为它们对我来说似乎不必要。因为这是一个redirection,在我看来,最后一页的标题是最重要的(我对此没有影响)。我尝试使用readfile下载此文件,但该文件是在1.1上剪切的GB@dominik什么?pdf文件大小大于1.1GB???是另一个zip文件的例子,pdf max~100MB我想我找到了答案
HTTP/1.1 200 OK
Date: Wed, 30 Dec 2020 15:45:21 GMT
Server: Apache
Last-Modified: Wed, 30 Dec 2020 16:38:38 GMT
ETag: "1a8f32-5b7af7b443bf7"
Accept-Ranges: bytes
Content-Length: 1740594
Content-Disposition: attachment
Content-Type: application/force-download
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
$url = str_replace('http://', 'https://', $url);
header("Location: " . $url);
exit;