我想向用户提供.APK
文件供下载。我有一个CDN
,它工作正常。当我请求文件下载时,它从CDN
下载。但是我有一个问题。我的用户请求从Android
设备进行下载,在这种情况下,下载纯APK文件会遇到麻烦,因为我希望用户安装该APK
文件,而使用纯APK则是我所知的。因此,我像这样创建一个.php
文件并添加'Content-Type: application/vnd.android.package-archive'
:
<?php
$file = 'myfile.apk'; //File that we want to send to user.
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.android.package-archive');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
当我请求download.php时,它的工作和用户可以下载并安装APK
文件。现在我的问题是,在这种情况下,该文件是从CDN下载的吗?我希望download.php
和APK文件都可以从CDN提供,因为我的流量不足。
或者是否可以在没有php的情况下将'Content-Type: application/vnd.android.package-archive'
添加到从CDN
下载文件中?
PS:当我请求纯APK文件时,因为它来自CDN,它会像缓存一样立即下载,但是使用download.php时,它需要花费一些时间来下载。这意味着不是CDN吗?
答案 0 :(得分:0)
或者是否可以将'Content-Type:application / vnd.android.package-archive'添加到没有php的CDN下载文件中?
是的,在这种情况下,下载必须能正常工作。
但是使用download.php,下载时间很长。这意味着不是CDN吗?
这需要时间,因为您使用readfile
并输出缓冲。在这种情况下,仅在php将目标文件的内容完全加载到内存后才开始下载。如果您打算投放较大的apk文件,则可能会出现此问题。
您可以通过以下方式为他们服务:
// set headers here ...
$output = fopen('php://out', 'a');
$target = fopen($target, 'r');
if (!$target || !$output) {
// throw error, if cant read file or
}
// read target file, using buffer size 1024
while (!feof($target)) {
fwrite($output, fread($target, 1024), 1024);
}
fclose($target);
fclose($output);