摘? 要:PHP是主流且開源免費的Web開發(fā)語言,文章基于PHP語言和MySQL數(shù)據(jù)庫、以Zend Studio為平臺制作了一個簡單的視頻網(wǎng)站,主要實現(xiàn)了視頻上傳和刪除功能,文章對制作過程和實現(xiàn)源代碼做了詳細且完整的記錄,上傳的視頻數(shù)據(jù)會保存在MySQL數(shù)據(jù)庫中,視頻資源也會保存到服務(wù)器指定目錄下,刪除視頻/視頻下架時為了釋放服務(wù)器存儲空間,實現(xiàn)了在數(shù)據(jù)庫和服務(wù)器目錄下的同時刪除。
關(guān)鍵詞:PHP;MySQL;視頻上傳;視頻刪除
中圖分類號:TP311? 文獻標(biāo)識碼:A? 文章編號:2096-4706(2023)05-0021-04
Implementation of Video Uploading and Deleting Function Based on PHP+MySQL
CHEN Zhaoyun
(School of Electronics and Information Engineering, Heyuan Polytechnic, Heyuan? 517000, China)
Abstract: PHP is a mainstream, open source and free Web development language. Based on PHP language and MySQL database, this paper uses Zend Studio as the platform to make a simple video website, which mainly realizes the functions of uploading and deleting videos. This paper makes a detailed and complete record of the production process and implementation source code. The uploaded video data is stored in the MySQL database, and the video resources are also stored in the specified directory of the server. In order to release the storage space of the server when deleting video, it is implemented to delete it in the database and the server directory at the same time.
Keywords: PHP; MySQL; video uploading; video deleting
0? 引? 言
視頻資源是互聯(lián)網(wǎng)信息傳播最主要的媒介,PHP是主流的Web站點開發(fā)語言,MySQL是使用人數(shù)最多的輕量級免費數(shù)據(jù)庫,本文通過介紹一個簡單PHP+MySQL視頻網(wǎng)站的制作,詳細介紹了視頻上傳和刪除功能的實現(xiàn),旨在為相關(guān)技術(shù)人員提供參考。
1? 功能概述
在視頻網(wǎng)站的開發(fā)與管理過程中,將視頻文件上傳至指定目錄并寫入數(shù)據(jù)庫、刪除數(shù)據(jù)庫中的視頻數(shù)據(jù)同時刪除對應(yīng)目錄下的視頻資源是兩個重要的功能,本文從數(shù)據(jù)庫創(chuàng)建開始,通過實際案例詳細介紹這兩個功能的實現(xiàn)過程和完整代碼,主要有以下三部分內(nèi)容:
(1)創(chuàng)建數(shù)據(jù)庫。
(2)視頻上傳功能實現(xiàn)。
(3)視頻刪除功能實現(xiàn)。
2? 案例實現(xiàn)
2.1? 創(chuàng)建存放視頻信息的數(shù)據(jù)庫和數(shù)據(jù)表
利用MySQL命令窗口或其他可視化工具設(shè)計存放視頻信息的數(shù)據(jù)庫Video Project和數(shù)據(jù)表Video Info,表的字段根據(jù)需要設(shè)計,本文以實現(xiàn)最基本的功能為依據(jù)設(shè)計video Info表,如表1所示。
2.2? 新建名為Video Article的PHP項目
在項目根目錄下新建名為addVideo.php、manageVideo.php和VideoDelete.php的三個文件和名為upload的文件夾,站點目錄如圖1所示。
2.2.1? addVideo.php頁完整代碼及重點解釋
addVideo.php用于實現(xiàn)視頻的上傳功能,視頻會保存在指定的upload文件夾下,視頻地址等相關(guān)信息會保存在數(shù)據(jù)庫Video Info表中,運行效果如圖2所示。
addVideo.php頁完整代碼如下:
<?php
header("Content-type: text/html; charset=utf-8");
$link=@mysqli_connect('localhost','root','root','videoproject',3306);//數(shù)據(jù)庫連接字符串
if(mysqli_connect_errno()){//數(shù)據(jù)庫連接錯誤數(shù)字代碼,0表示沒有錯誤
exit(mysqli_connect_error());//輸出錯誤代碼對應(yīng)的錯誤描述信息并退出
}
mysqli_set_charset($link, 'utf8');
if(isset($_POST['addVideoBtn'])){
if(empty($_POST['vTitName'])|| empty($_POST['videoInfo'])){
echo "";
}else{
if(is_uploaded_file($_FILES['videoUp']['tmp_name'])){
//?通過上傳的臨時文件判斷是否有文件上傳$
$arr=pathinfo($_FILES['videoUp']['name']);
//獲取上傳文件的名稱、類型等信息存放到數(shù)組中
$vAddr=iconv('UTF-8','GB2312',"upload/{$_POST['vTitName']}.{$arr['extension']}");//$vAddr是視頻的存放路徑,windos中文系統(tǒng)要求傳入的參數(shù)如果有中文必須是GBK編碼,故必須用iconv()轉(zhuǎn)換字符集
if(move_uploaded_file($_FILES['videoUp']['tmp_name'], "{$vAddr}")){//移動臨時文件到指定位置
$vAddr="upload/{$_POST['vTitName']}.{$arr['extension']}";//寫入數(shù)據(jù)庫時要用utf-8,否則中文字符寫不進去
$query="insert into videoinfo(videoName,videoIntro,uptime,videoAddress,playCounts) ".
"values('{$_POST['vTitName']}','{$_POST['videoInfo']}','{$_POST['addVTime']}','{$vAddr}',{$_POST['playNums']})";
if(mysqli_query($link, $query)){
echo "";
}else{
echo "";
}? ? ? ?}? ?}? ? } }
?>
<!DOCTYPE HTML>
上傳視頻
2.2.2? manageVideo.php頁完整代碼及重點解釋
manageVideo.php用于將所有視頻信息從數(shù)據(jù)庫中查詢并展示出來,單擊某條視頻信息的刪除按鈕則會跳轉(zhuǎn)到videoDelete.php頁面執(zhí)行刪除操作,運行效果如圖3所示。
manageVideo.php頁完整代碼如下:
<?php
$link=@mysqli_connect('localhost','root','root','videoproject',3306);
if(mysqli_connect_errno()){
exit(mysqli_connect_error());
}
mysqli_set_charset($link, 'utf8');
?>
<!DOCTYPE HTML>
管理視頻
視頻名稱 | 視頻簡介 | 播放次數(shù) | 上傳時間 | 操作 |
---|---|---|---|---|
<?php echo $data['videoName']?> | <?php echo $data['videoIntro']?> | <?php echo $data['playCounts']?> | <?php echo $data['upTime']?> | 刪除 |
2.2.3? videoDelete.php頁完整代碼及重點解釋
videoDelete.php用于刪除數(shù)據(jù)庫中指定的視頻信息并同時刪除服務(wù)器上的視頻資源,以節(jié)約存儲空間,成功刪除之后會有彈框提示,效果如圖4所示。
videoDelete.php頁完整代碼如下:
<?php
header("Content-type: text/html; charset=utf-8");
$link=@mysqli_connect('localhost','root','root','videoproject',3306);//數(shù)據(jù)庫連接字符串
if(mysqli_connect_errno()){//數(shù)據(jù)庫連接錯誤數(shù)字代碼,0表示沒有錯誤
exit(mysqli_connect_error());//輸出錯誤代碼對應(yīng)的錯誤描述信息并退出
}
mysqli_set_charset($link, 'utf8');
if(!isset($_GET['vid'])|| !is_numeric($_GET['vid'])){
echo "";
}
$query="select * from videoInfo where videoID={$_GET['vid']}";
$result=mysqli_query($link, $query);
$data=mysqli_fetch_assoc($result);
$vAddr=iconv('UTF-8','GB2312',"{$data['videoAddress']}");
//獲取視頻保存目錄,并轉(zhuǎn)換成GBK格式,否則無法刪除指定目錄下的視頻文件
if(mysqli_num_rows($result)){
unlink($vAddr);//執(zhí)行刪除指定視頻文件的操作
$str="delete from videoinfo where videoID={$_GET['vid']}";
if(mysqli_query($link, $str)){
echo "";
}else{
echo "";
}
}
?>
3? 程序說明
程序說明如下:
(1)要將視頻上傳至指定目錄時,如果文件名中包含中文字符則必須要用iconv()轉(zhuǎn)換字符集(如果視頻名稱以日期+隨機數(shù)命名則不需要),move_uploaded_file()函數(shù)是保存視頻的關(guān)鍵代碼。
(2)同理,如果視頻文件名中包含中文字符,刪除視頻時要先將視頻地址從數(shù)據(jù)庫中查詢出來進行編碼格式的轉(zhuǎn)換,再用unlink()刪除指定的視頻文件。
(3)項目以實現(xiàn)最簡單的視頻上傳和刪除功能為目的,沒有設(shè)計視頻類別表、視頻所屬用戶信息表等,各項功能都進行了簡化。
4? 結(jié)? 論
基于PHP的視頻點播網(wǎng)站能夠?qū)崿F(xiàn)強大的功能、良好的用戶體驗,由于篇幅限制,本文只介紹了視頻的上傳和刪除功能,實現(xiàn)了中英文路徑無差別存取,用戶權(quán)限管理、視頻類別管理和視頻資源修改等功能暫未涉及。
參考文獻:
[1] 徐俊強,史香雯.PHP+MySQL動態(tài)網(wǎng)站設(shè)計實用教程 [M].北京:清華大學(xué)出版社,2015.
[2] 黑馬程序員.PHP網(wǎng)站開發(fā)實例教程 [M].北京:人民郵電出版社,2020.
[3] 莫小梅,毛衛(wèi)英.網(wǎng)頁設(shè)計與Web前端開發(fā)案例教程 [M].北京:清華大學(xué)出版社,2019.
[4] 黑馬程序員.PHP+MySQL動態(tài)網(wǎng)站開發(fā) [M].北京:人民郵電出版社,2021.
[5] 杜海穎.PHP程序設(shè)計項目化教程 [M].北京:水利水電出版社,2021.
作者簡介:陳趙云(1982.05—),男,漢族,江西豐城人,講師,碩士研究生,研究方向:物聯(lián)網(wǎng)技術(shù)應(yīng)用、Web系統(tǒng)開發(fā)。
收稿日期:2022-10-13