2012-07-26 78 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

相关问题