我使用以下代码仅使用应用程序的名称获取包的完整文件名:
<?php
// define which app
$app = "appname";
// Search the directory for possible matches
foreach (glob("../../debs/com.dev.".$app."*") as $filename) {
preg_match('/\\d\\.\\d-\\d_.*\\.deb/', $filename, $matches);
$debname = "com.dev.".$app."_{$matches[0]}\n"; }
echo $debname;
?>
然后在echo
中正确显示包($ debname)的文件名:com.dev.appname_1.0-1_iphoneos-arm.deb
所以我接着尝试使用这个$ debname变量来获取文件的大小:
<?php function format_size($size) {
$sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
if ($size == 0) { return('n/a'); } else {
return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); }
}
echo format_size(filesize("../../debs/".$debname));
?>
由于一些奇怪的原因,代码没有显示大小,它显示n / a
如果我手动将debname变量设置为$debname = "com.dev.appname_1.0-1_iphoneos-arm.deb"
,它工作正常,我得到文件大小..
我无法弄清楚问题是什么
我尝试过使用SESSION ..
session_start();
$SESSION['debname'] = $debname;
...
...
echo format_size(filesize("../../debs/".$SESSION['debname']));
但同样的问题..
答案 0 :(得分:1)
这一行错了:
$debname = "com.dev.".$app."_{$matches[0]}\n";
^^ new-line character
请注意,您要在字符串末尾添加换行符。如果需要,您应该删除它并使用var_dump($debname);
确认正确的名称,以确保中间或末尾没有空格:
$debname = "com.dev.".$app."_{$matches[0]}";