【发布时间】:2011-01-26 18:27:15
【问题描述】:
我在 PHP/MYSQL 中创建了一个基本的 CMS,以允许摄像师管理他们的视频组合。它托管在共享服务器上。在执行以下上传脚本之前,查询会将视频元数据插入数据库。
我的上传脚本在我尝试过(在多台机器上、在我家和在大学)时都能正常工作,但是当客户尝试自己上传视频时,CMS 只上传了 347 个字节,然后表现得好像上传完成。
这是我的代码问题还是客户端的问题?有什么我可以做的吗(我无权访问原始 PHP/Apache 日志...)谢谢!
这是 linux "strings" 命令对 347 字节二进制文件的输出:
[moov
Srmra
\rmda
Drdrf
url
/Crispy%20Revised%20SD%20h264%20web-desktop.m4v
rmdr
zrmda
Hrdrf
url
3Crispy%20Revised%20SD%20h264%20web-iPhone-cell.3gp
rmdr
rmvc
mobi
urmda
Crdrf
url
.Crispy%20Revised%20SD%20h264%20web-iPhone.m4v
rmdr
rmvc
mobi
这大约占 347 字节的 245 个字节。
另外,这里是基本上传脚本的核心组件(我省略了一些清理活动):
if ($file["error"] > 0)
{
echo "<p>Return Code: " . $file["error"] . "</p>";
}
else
{
if (file_exists($Dir.$file["propername"]))
{
echo "<p>".$file["propername"] . " already exists. ";
}
else
{
move_uploaded_file($file["tmp_name"],
$Dir.$file["propername"]);
echo "<p>Stored in: " . $Dir.$file["propername"];
}
}
【问题讨论】:
-
您是否确认它是视频文件的前几个字节?也许他只是上传了一个
.rm文件?您是否有任何代码来验证文件格式或检查 $_FILES 中的上传错误情况? -
文件扩展名的客户端验证是我一直在做的。在启动上述功能之前,我也会执行 if ($file["type"] == "video/quicktime") 。所以我猜这个文件被识别为一个快速移动,即使是 347 字节。我不检查上传错误,所以这很简单,我应该尝试...谢谢。
-
是的,查看 347 字节文件并发布其中包含的内容
-
$file[type]中的媒体信息不可靠。它告诉您浏览器假定(或伪造)内容应该是什么。您可能还想通过mime_content_type()进行验证。 -
请查看我在主帖中的编辑,了解 347 字节文件的字符串内容。
标签: php apache video file-upload shared-hosting