2012-07-26 80 views
0

我需要在php中獲取wav文件的持續時間。我知道有很多代碼示例可用於此問題。我用過這個。如何在上傳之前在php中查找wav文件的持續時間?

function wavDur($file) { 
    $fp = fopen($file, 'r'); 
    if (fread($fp,4) == "RIFF") { 
     fseek($fp, 20); 
     $rawheader = fread($fp, 16); 
     $header = unpack('vtype/vchannels/Vsamplerate/Vbytespersec/valignment/vbits',$rawheader); 
     $pos = ftell($fp); 
     while (fread($fp,4) != "data" && !feof($fp)) { 
      $pos++; 
      fseek($fp,$pos); 
     } 
     $rawheader = fread($fp, 4); 
     $data = unpack('Vdatasize',$rawheader); 
     $sec = $data[datasize]/$header[bytespersec]; 
     $minutes = intval(($sec/60) % 60); 
     $seconds = intval($sec % 60); 
     return str_pad($minutes,2,"0", STR_PAD_LEFT).":".str_pad($seconds,2,"0", STR_PAD_LEFT); 
    } 

但問題是,我需要的文件控制不會讓我得到充分的路徑我只想當用戶選擇的文件上傳之前,展會期間給用戶的文件路徑。這可能嗎?

+0

這對於php來說是不可能的,因爲您必須先上傳文件。使用html5和JavaScript可能是可能的。 – Musa 2012-07-26 06:25:34

+0

html 5將與IE瀏覽器兼容性問題。 – 2012-07-26 06:30:43

+0

'Flash'可能可以實現 – Musa 2012-07-26 06:33:28

回答

0

上傳之前,文件駐留在用戶的計算機上,服務器端的PHP腳本不知道該文件。因此,在文件上傳之前不可能獲得有關文件的任何數據。

+0

所以有什麼其他的方式,我可以得到文件的持續時間 – 2012-07-26 06:31:24

+0

不是當PHP仍然沒有拿到文件。換句話說,讓用戶先上傳文件,然後將文件屬性顯示回給用戶。 – uzyn 2012-07-26 06:33:28

相關問題