基于PHP+MySQL的视频上传与删除功能实现

2023-06-22 23:59陈赵云
现代信息科技 2023年5期

摘  要:PHP是主流且开源免费的Web开发语言,文章基于PHP语言和MySQL数据库、以Zend Studio为平台制作了一个简单的视频网站,主要实现了视频上传和删除功能,文章对制作过程和实现源代码做了详细且完整的记录,上传的视频数据会保存在MySQL数据库中,视频资源也会保存到服务器指定目录下,删除视频/视频下架时为了释放服务器存储空间,实现了在数据库和服务器目录下的同时删除。

关键词:PHP;MySQL;视频上传;视频删除

中图分类号:TP311  文献标识码: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  引  言

視频资源是互联网信息传播最主要的媒介,PHP是主流的Web站点开发语言,MySQL是使用人数最多的轻量级免费数据库,本文通过介绍一个简单PHP+MySQL视频网站的制作,详细介绍了视频上传和删除功能的实现,旨在为相关技术人员提供参考。

1  功能概述

在视频网站的开发与管理过程中,将视频文件上传至指定目录并写入数据库、删除数据库中的视频数据同时删除对应目录下的视频资源是两个重要的功能,本文从数据库创建开始,通过实际案例详细介绍这两个功能的实现过程和完整代码,主要有以下三部分内容:

(1)创建数据库。

(2)视频上传功能实现。

(3)视频删除功能实现。

2  案例实现

2.1  创建存放视频信息的数据库和数据表

利用MySQL命令窗口或其他可视化工具设计存放视频信息的数据库Video Project和数据表Video Info,表的字段根据需要设计,本文以实现最基本的功能为依据设计video Info表,如表1所示。

2.2  新建名为Video Article的PHP项目

在项目根目录下新建名为addVideo.php、manageVideo.php和VideoDelete.php的三个文件和名为upload的文件夹,站点目录如图1所示。

2.2.1  addVideo.php页完整代码及重点解释

addVideo.php用于实现视频的上传功能,视频会保存在指定的upload文件夹下,视频地址等相关信息会保存在数据库Video Info表中,运行效果如图2所示。

addVideo.php页完整代码如下:

<?php

header("Content-type: text/html; charset=utf-8");

$link=@mysqli_connect('localhost','root','root','videoproject',3306);//数据库连接字符串

if(mysqli_connect_errno()){//数据库连接错误数字代码,0表示没有错误

exit(mysqli_connect_error());//输出错误代码对应的错误描述信息并退出

}

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']);

//获取上传文件的名称、类型等信息存放到数组中

$vAddr=iconv('UTF-8','GB2312',"upload/{$_POST['vTitName']}.{$arr['extension']}");//$vAddr是视频的存放路径,windos中文系统要求传入的参数如果有中文必须是GBK编码,故必须用iconv()转换字符集

if(move_uploaded_file($_FILES['videoUp']['tmp_name'], "{$vAddr}")){//移动临时文件到指定位置

$vAddr="upload/{$_POST['vTitName']}.{$arr['extension']}";//写入数据库时要用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>

视频上传

上传视频

视频标题:

"vTitName">

视频简介:
视频地址:

"videoUp">

上传时间:
播放次数:

"playNums" class="vName">

2.2.2  manageVideo.php页完整代码及重点解释

manageVideo.php用于将所有视频信息从数据库中查询并展示出来,单击某条视频信息的删除按钮则会跳转到videoDelete.php页面执行删除操作,运行效果如图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>

视频管理

管理视频

视频名称视频简介播放次数上传时间操作

<?php

$query="select * from videoinfo";

$result=mysqli_query($link, $query);

while($data=mysqli_fetch_assoc($result)){    ?>

<?php echo $data['videoName']?>

<?php echo $data['videoIntro']?>

<?php echo $data['playCounts']?>

<?php echo $data['upTime']?>

删除

<?php } ?>

2.2.3  videoDelete.php页完整代码及重点解释

videoDelete.php用于删除数据库中指定的视频信息并同时删除服务器上的视频资源,以节约存储空间,成功删除之后会有弹框提示,效果如图4所示。

videoDelete.php页完整代码如下:

<?php

header("Content-type: text/html; charset=utf-8");

$link=@mysqli_connect('localhost','root','root','videoproject',3306);//数据库连接字符串

if(mysqli_connect_errno()){//数据库连接错误数字代码,0表示没有错误

exit(mysqli_connect_error());//输出错误代码对应的错误描述信息并退出

}

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']}");

//获取视频保存目录,并转换成GBK格式,否则无法删除指定目录下的视频文件

if(mysqli_num_rows($result)){

unlink($vAddr);//执行删除指定视频文件的操作

$str="delete from videoinfo where videoID={$_GET['vid']}";

if(mysqli_query($link, $str)){

echo "";

}else{

echo "";

}

}

?>

3  程序说明

程序说明如下:

(1)要将视频上传至指定目录时,如果文件名中包含中文字符则必须要用iconv()转换字符集(如果视频名称以日期+随机数命名则不需要),move_uploaded_file()函数是保存视频的关键代码。

(2)同理,如果视频文件名中包含中文字符,删除视频时要先将视频地址从数据库中查询出来进行编码格式的转换,再用unlink()删除指定的视频文件。

(3)项目以实现最简单的视频上传和删除功能为目的,没有设计视频类别表、视频所属用户信息表等,各项功能都进行了简化。

4  结  论

基于PHP的视频点播网站能够实现强大的功能、良好的用户体验,由于篇幅限制,本文只介绍了视频的上传和删除功能,实现了中英文路径无差别存取,用户权限管理、视频类别管理和视频资源修改等功能暂未涉及。

参考文献:

[1] 徐俊强,史香雯.PHP+MySQL动态网站设计实用教程 [M].北京:清华大学出版社,2015.

[2] 黑马程序员.PHP网站开发实例教程 [M].北京:人民邮电出版社,2020.

[3] 莫小梅,毛卫英.网页设计与Web前端开发案例教程 [M].北京:清华大学出版社,2019.

[4] 黑马程序员.PHP+MySQL动态网站开发 [M].北京:人民邮电出版社,2021.

[5] 杜海颖.PHP程序设计项目化教程 [M].北京:水利水电出版社,2021.

作者简介:陈赵云(1982.05—),男,汉族,江西丰城人,讲师,硕士研究生,研究方向:物联网技术应用、Web系统开发。

收稿日期:2022-10-13