2011-07-08 38 views
0

我正在寫一些將與MySQL交互的PHP,1.上載並顯示Quicktime .mov文件。我已經很容易地完成了與圖像格式類似的事情,但是這個給我一些問題。上傳工作的意思是數據被插入到SQL表中,而客戶端從我的viewvideo.php腳本中獲取某些內容。然而,問題是客戶端收到的數據不能作爲Quicktime電影進行分析,這意味着沿線的某處出現了問題,或者數據編碼不正確?這裏是我的兩個腳本的重要部分:使用MySQL和PHP進行視頻上傳的幫助

上傳:

$name = $_FILES["file"]["tmp_name"]; 
$contents = file_get_contents($name); 
mysql_query("INSERT INTO videos(id,data,title,description) VALUES($n,'$contents','$title','$description')"); 

顯示:

$x = mysql_query("SELECT data FROM videos WHERE id=$id"); 
$results = mysql_fetch_array($x); 
$data = $results[0]; 
header("Content-Type: video/quicktime"); 
echo $data; 
exit; 

我現在唯一的假設是,當我把「」大約$內容,它會擾亂字符串的編碼。 SQL服務器暫時關閉進行維護,所以我將不得不等待測試。任何幫助表示讚賞。

+0

你如何在數據庫中存儲二進制MOV數據?視頻數據可能會混淆寫入數據庫。最好將文件物理存儲在服務器上,並將文件的路徑存儲在數據庫中。減少數據庫開銷。 – Jack

+0

想象一下,該文件包含一個''',那麼你的SQL查詢會發生什麼? – hakre

+0

我將它存儲在BLOB中。我希望我可以將它存儲在一個文件中,但管理員不允許我有寫入權限:( – codedude

回答

1

對數據庫執行此操作的不好主意。 Blob只適用於二進制數據=< 256KB。見here

我會建議你只需使用

<input type="file" .../> 

上傳.mov -files,然後直接通過HTTP訪問文件或使用像一個播放器插件從服務器串流(在Flash爲例) 。

+0

嘿,感謝您的快速響應。我目前使用的託管不允許我寫文件,只能用SQL。我想我可以切換主機,但我寧願如果我能找到某種解決方案.. – codedude

+0

如果你正在認真打算這麼做,我建議你切換主機。會讓你的整個數據庫變慢,另外,我認爲Script-Solution對你的問題會非常難看。 –

+0

編輯:我想我要切換主機,謝謝大家的迴應如此之快。 – codedude