【问题标题】:Help with Video Upload with MySQL and PHP帮助使用 MySQL 和 PHP 上传视频
【发布时间】:2011-07-08 21:48:08
【问题描述】:

我正在编写一些与 MySQL 交互的 PHP,以 1. 上传和 2. 显示 Quicktime .mov 文件。我很容易用图像格式做了类似的事情,但这给我带来了一些问题。上传在数据被插入 SQL 表的意义上是有效的,并且客户端 正在 从我的 viewvideo.php 脚本中获取一些东西。但是,问题在于客户端接收到的数据无法解析为 Quicktime 电影,这意味着沿线某处出现问题......或者数据编码不正确?以下是我的两个脚本的重要部分:

上传:

$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;

我目前唯一的假设是,当我将 ' ' 放在 $contents 周围时,它会弄乱字符串的编码。 SQL 服务器暂时停机进行维护,所以我将不得不等待测试。任何帮助表示赞赏。

【问题讨论】:

  • 如何将二进制 MOV 数据存储在数据库中?视频数据在写入数据库时​​可能会变得混乱。最好将文件物理存储在服务器上并将文件的路径存储在数据库中。减少数据库开销。
  • 假设文件包含',那么您的 SQL 查询会发生什么?
  • 我将它存储在一个 BLOB 中。我希望我可以将它存储在一个文件中,但管理员不允许我拥有写访问权限:(
  • 哦..没想到那个hakre..无意的SQL注入。虽然我认为问题不存在,因为它正确插入到 SQL 中。唯一的问题是插入的实际内容。

标签: php mysql video file-upload lob


【解决方案1】:

使用数据库执行此操作是个坏主意。 Blob 仅用于二进制数据=< 256KB。见here

我建议您只需使用

上传.mov-文件
<input type="file" .../>

然后通过 HTTP 直接访问文件或使用播放器插件(例如 Flash)从服务器流式传输文件。

【讨论】:

  • 您好,感谢您的快速回复。我目前使用的主机不允许我写文件,只能使用 SQL。我想我可以切换主机,但我宁愿找到某种解决方案..
  • 如果您真的打算这样做,我建议您切换主机。对于大文件,Blob 非常慢,并且会降低整个数据库的速度。另外,我认为您的问题的脚本解决方案会非常难看。
  • 编辑:我想我要换主机了。感谢大家这么快回复。
猜你喜欢
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 2017-03-03
  • 1970-01-01
  • 2017-12-24
  • 2011-04-25
  • 2011-11-14
相关资源
最近更新 更多