mysql存储视频_特殊格式文件(视频、声音等) 在数据库中的存储方式

问题描述:一般网站,对于用户上传的图片、视频、声音等特殊格式的数据是以本地文件的形式存储,然后把相应URL路径存放在数据库里呢;还是,将数据直接写到数据库里存放?

答:多数网站,基本上采用的是第一种方式,即:文件存储+URL路径的模式。

首先,视频、声音、图片为非结构化数据,传统的关系型数据库主要是是针对结构化数据设计的,虽然有相应的字段格式支持存储,即:如果要把视频等文件存储到数据库的话,要使用大字段(例如:Oracle,Mysql中的

数据库里可以直接写入上述特殊数据,但这种存储方式对于用户请求过程有明显的缺点,占内存、速度慢、效率不高,会耗费较大的数据库资源;因为用户每次请求数据的时候,需要先访问数据库,从数据库中查询到相关文件,然后将文件以数据流的方式读到数据库内存,最后返回给用户,这时就需要你的系统要有较大的内存,比较快的读取速度,另外还会一定程度上影响数据库的一些查询性能。比如:数据库表中如果添加用于存放视频格式的二进制字段后,即使相应的二进制字段为NULL,查询的时候不查询该二进制字段,查询速度仍然会下降很多,这种情况下想通过优化SQL语句提高性能,收效胜微。

说了这么多,是不是选择 直接存在数据库就一定不好呢,其实不然!

将视频、图片等格式的数据存放在数据库的话,也有一定的好处,比如:

比较容易去重,可以将多余重复的数据利用SQL语句过滤删除,操作方便

备份的时候,使用数据库的备份方式简单。(当然这也是相对的,数据的存储越大,恢复越麻烦。)

3. 相较与原生存储 更加安全(增加了数据库的一层保护)

那么,什么样的业务场景适合直接存放在数据库中?

如果是一个小型的网站,像论坛等,平时用户上传、请求的该类特殊数据比较少,而又注重上述这种方式的优点的话,可以采用。

总结:

大多数情况下,如果要存储图片、文件、视频等大文件对象,建议存成本地文件(提高性能的话采用分布式存储),不建议直接存储到数据库中;对于目前主流的视频网站,如何存放视频文件呢?可以参考

附:Mysql数据库中存入视频格式文件测试

创建一个测试表test,使用longblob或者mediumblob

CREATE TABLE test (id INTEGER NOT NULL PRIMARY KEY,name VARCHAR (20),movie LONGBLOB);

然后把视频文件导入

INSERT INTO test VALUES(1, 'titanic', LOAD_FILE("/tmp/good.mp4"));

注意,如果不使用longblob可能出现以下错误

163501263.jpg

  • 13
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您可以按照以下步骤将视频上传到文件夹并将其链接到数据库: 1. 创建一个 HTML 表单,以便用户可以选择要上传的视频文件。 ```html <form method="post" enctype="multipart/form-data"> <input type="file" name="video"> <input type="submit" value="Upload"> </form> ``` 2. 在 PHP 处理上传的视频文件。您需要检查上传的文件是否存在并且是允许的视频类型(例如MP4,AVI等)。然后,将视频文件移动到服务器上的文件夹。 ```php if(isset($_FILES['video'])) { $file_name = $_FILES['video']['name']; $file_size = $_FILES['video']['size']; $file_tmp = $_FILES['video']['tmp_name']; $file_type = $_FILES['video']['type']; // Check if file is a video if($file_type == "video/mp4" || $file_type == "video/avi") { // Move file to server folder move_uploaded_file($file_tmp, "videos/" . $file_name); echo "Video uploaded successfully."; } else { echo "File must be a video."; } } ``` 3. 将视频文件名和路径存储MySQL 数据库。您需要创建一个包含视频文件名和路径的表,然后将它们插入到该表。 ```php // Connect to database $conn = mysqli_connect("localhost", "username", "password", "database"); // Insert video file name and path into table $file_path = "videos/" . $file_name; $sql = "INSERT INTO videos (file_name, file_path) VALUES ('$file_name', '$file_path')"; mysqli_query($conn, $sql); ``` 4. 获取视频列表并在网页上显示。您可以从数据库检索视频名称和路径,并将它们放入 HTML 视频标签。 ```php // Get list of videos from database $sql = "SELECT * FROM videos"; $result = mysqli_query($conn, $sql); // Display video list on webpage while($row = mysqli_fetch_assoc($result)) { echo "<video width='320' height='240' controls>"; echo "<source src='" . $row['file_path'] . "' type='video/mp4'>"; echo "</video>"; } ``` 这些步骤应该能够让您使用 PHP / MySQL视频上传到文件夹并将其链接到数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值