如何在上传之前在php中找到wav文件的持续时间


How to find wav file duration in php before uploading?

我需要在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);
    }

但问题是,我需要文件路径——文件控件不允许我获得完整路径——我想在用户选择文件时上传之前向用户显示持续时间。这可能吗?

在上传之前,文件位于用户的计算机上,服务器端的PHP脚本对该文件一无所知。因此,在上传文件之前,不可能获得该文件的任何数据。