问题描述
最新消息:我听说过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以获取其他解决方法。