Azure Linux Web App直接从URL下载文件不起作用

问题描述

最新消息:我听说过Azure支持,并且此行为可能与平台升级和Linux文件系统有关...

假设我有一个为网站提供服务的Linux Web App,在该网站中,我有一些内容(在这种情况下为PDF文件)存储在名为“ temp”的文件夹中。

现在,我希望允许访问者通过访问该URL直接下载文件(链接是假的,仅是示例)-

http://test.azurewebsites.net/temp/PdfIWantToDownload

这以前曾经起作用,但是最近我发现它由于某种原因被破坏了,当访问上面的链接时,下载确实被触发了,但是它停留在1MB且未完成。

我确实将所有资源都移到了新的Azure订阅中,但是不确定是否会造成这样的问题。

添加PHP下载处理程序后,可以通过此链接下载文件-

http://test.azurewebsites.net/temp/download.php?filename=PdfIWantToDownload

这是怎么回事?我需要调整某种配置以允许直接URL下载吗?还是Azure禁止这种使用?

编辑:直接进入链接时下载确实卡住了,有趣的是,一段时间后(预期)下载失败,然后如果我恢复下载(使用Chrome,但怀疑)这种情况下浏览器很重要),我突破了1MB的限制,并成功下载了它,没有任何问题。

在许多情况下,Azure已被证明是有用的,但是在这种情况下,它相当令人困惑,我无法解决任何问题。

解决方法

此问题已解决时,请尝试使用以下解决方法:

<?php 
    $handle = fopen("http://www.example.com/","rb"); 
    if (FALSE === $handle) {
        exit("Failed to open stream to URL"); 
    }

    $contents = ''; 
    while (!feof($handle)) {
        $contents .= fread($handle,8192); 
    }

    fclose($handle); 
?>

https://www.php.net/manual/en/function.fread.php

编辑:查看以下blog post以获取其他解决方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...