2012-05-14 47 views
0

我使用下面的PHP類文本轉換爲語音:http://www.masnun.me/2009/12/14/googles-text-to-speech-api-a-php-wrapper-class.html流MP3瀏覽器,而不是將數據保存爲文件

它使用谷歌的API,而現在的代碼將文件保存在本地,但是我希望它強制將文件流式傳輸到用戶的瀏覽器。這是我想出的:

function saveToFile($filename) { 
    $filename = trim($filename); 
    if(!empty($filename)) { 
      header("Content-type: application/octet-stream"); 
      header('Content-length: ' . filesize($this->mp3data)); 
      header('Content-Disposition: filename="' . $filename); 
      header('X-Pad: avoid browser bug'); 
      header('Cache-Control: no-cache'); 
      readfile($this->mp3data); 
    } else { return false; } 
} 

但生成的文件是0kb空mp3文件。我究竟做錯了什麼?

+0

是'$ this-> mp3data'是否爲空? Content-length頭中有什麼? – Asaph

+0

$ this-> mp3data是你從google的api獲得的,它是一個mp3文件。 –

+0

注意:'$ this-> mp3data'包含文件的內容,而不是文件的url。現在我怎樣才能將這個流式傳輸給用戶作爲mp3文件? –

回答

1

readfile究竟回顯到瀏覽器?如果它只是返回的東西它不會工作,你如何期望:

echo readfile($this->mp3data); 

我也明白,ReadFile的工作與路徑,如果是這樣的話,只要嘗試:

echo $this->mp3data; 
+0

['readfile()'](http://php.net/manual/en/function.readfile.php)是一個內置的php函數。它輸出到緩衝區並返回一個int。 – Asaph

2

readfile()接受filename作爲參數,而不是文件的內容。 嘗試用此代替readfile行:

echo $this->mp3data; 
相關問題