我想使用filesize()PHP 中的函式列印歌曲的檔案大小。這是我的代碼:
<?php
class parent_class{
function file_size($filename){
$size=filesize($filename);
if( $size>1023 && $size<1048575){
$size = $size/1024;
$size = " (". $size." kb)";
}
else if(file_exists($filename) && $size>1048575){
$size = $size/1048576;
$size = " (". round($size, 2) ." mb)";
}
else{
$size = " (". $size." b)";
}
return $size;
}
function displaysong(){
$songs = glob('songs/*.mp3');
foreach ($songs as $song){ ?>
<li class="mp3item">
<a href="<?php echo $song; ?>"> <?php echo basename($song); echo $this->file_size($song);
?></a>
</li>
<?php }
}
function display_playlists(){
$playlists = glob('songs/*.txt');
foreach ($playlists as $file){ ?>
<li class="playlistitem">
<a href="music.php?playlist=<?php echo basename($file); ?>"> <?php echo basename($file) ; echo $this->file_size($file);?></a>
</li>
<?php }
}
function display_indivsong($file){ ?>
<li class="mp3item">
<?php $path = "songs/$file";?>
<a href="<?php echo $path?>"> <?php echo $file; echo $this->file_size($path);?></a>
</li>
<?php }
} ?>
<body>
<div id="header">
<h1>190M Music Playlist Viewer</h1>
<h2>Search Through Your Playlists and Music</h2>
</div>
<div id="listarea">
<?php $song = NULL?>
<form method="$_REQUEST" >
<ul id="musiclist" name="playlist">
<?php
$song = new parent_class();
if(!empty($_REQUEST["playlist"])){
$playlist = $_REQUEST["playlist"];
$path = pathinfo($playlist, PATHINFO_EXTENSION);
}
if(empty($playlist)){
$song->displaysong();
$song->display_playlists();
}
else if(!empty($playlist) && $path == "txt"){
$list = $playlist;
$content = file("songs/$list");
foreach($content as $indiv_song){
$song->display_indivsong($indiv_song);
}
}
?>
當我顯示歌曲及其大小時,一切正常。但是,當display_indivsong()被呼叫時,filesize()會引發錯誤。請注意,在內部display_indivsong(),該檔案再次被使用并引發錯誤。但是第一次在同一個檔案中使用它,檔案的大小回傳沒有問題。
uj5u.com熱心網友回復:
在display_indivsong()呼叫$this->file_size($path). 而不是通過$path,您應該通過原始$file:
function display_indivsong($file){ ?>
<li class="mp3item">
<?php $path = "songs/$file";?>
<a href="<?php echo $path?>"> <?php echo $file; echo $this->file_size($file);?></a>
</li>
<?php
}
這是因為傳遞給的引數$file已經包含路徑。
此外,您正在從文本檔案中讀取檔案名,然后遍歷這些檔案名:
$content = file("songs/$list");
foreach($content as $indiv_song){
$song->display_indivsong($indiv_song);
}
如果您不修剪尾隨 EOL,這將導致問題。您應該將該行更改為:
$song->display_indivsong(trim($indiv_song));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/512459.html
標籤:php
上一篇:在索引頁面上獲取帖子
