使用php上传和检索mysql数据库中的视频
嘿家伙我是PHP语言的新手。我有一个大学项目,我必须创建虚拟教室,教师可以上传视频讲座,学生可以访问它。我坚持上传和从MySQL数据库检索视频的问题。我尝试将视频路径保存到数据库中,并将视频保存到一个文件夹中,然后尝试访问它。但真正的问题是有时视频正在上传,有时候并非如此。每当我试图保存视频超过100 MB,路径不能保存在数据库中。但如果视频尺寸较小,那么它很容易保存到数据库(我的意思是路径)。我真的不明白问题是什么,因为我试图保存路径而不是视频。任何人都可以帮忙吗?使用php上传和检索mysql数据库中的视频
*********** THSI是我上传的SCRIPT ***********
<?php
session_start();
require("/Applications/MAMP/htdocs/conn.php");
function is_valid_type($file)
{
$valid_types = array('video/mp4', 'video/mpeg', 'video/mpg', 'audio/mpeg');
if (in_array($file['type'], $valid_types))
return 1;
return 0;
}
function showContents($array)
{
echo "<pre>";
print_r($array);
echo "</pre>";
}
$TARGET_PATH = "/Applications/MAMP/htdocs/home/";
$id = $_POST['id'];
$name = $_POST['name'];
$video_path = $_FILES['video_path'];
$TARGET_PATH .= $video_path['name'];
if ($id == "" || $name == "" || $video_path['name'] == "")
{
$_SESSION['error'] = "All fields are required";
header("Location: index.php");
exit;
}
if (!is_valid_type($video_path))
{
$_SESSION['error'] = "You must upload a jpeg, gif,mp4 or bmp";
header("Location: index.php");
exit;
}
if (file_exists($TARGET_PATH))
{
$_SESSION['error'] = "A file with that name already exists";
header("Location: index.php");
exit;
}
if (move_uploaded_file($video_path['tmp_name'], $TARGET_PATH))
{
$sql = "insert into video (id, name, video_path) values ('$id', '$name', '" . $video_path['name'] . "')";
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
header("Location: http://localhost:8888/htdocs/images.php");
exit;
}
else
{
$_SESSION['error'] = "Could not upload file. Check read/write persmissions on the directory";
header("Location: index.php");
exit;
}
?>
********* ********这是我的脚本显示************
<?php
require("/Applications/MAMP/htdocs/conn.php");
?>
<html>
<head>
<title>tutorial</title>
</head>
<body>
<div>
<?php
$sql = "select * from video";
$result = mysql_query($sql) or die ("Could not access DB: " . mysql_error());
while ($row = mysql_fetch_assoc($result))
{
$src=$row['video_path'];
$path="http://localhost:8888/home/";
$home=$path.$src;
//echo "<video src=\"$home" ."\" height=\"200\" width=\"200\"/>";
echo $row['id'] . " " . $row['name'] . "<br />";
echo "</p>";
?>
<video width="320" height="240" controls>
<source src="<?php echo $home ?>" type="video/mp4" >
</video>
<?php
}
?>
</div>
</body>
</html>
**************** **这是我的表格脚本******** 梦在代码教程
<style type="text/css">
label
{
float: left;
text-align: right;
margin-right: 10px;
width: 100px;
color: black;
}
#submit
{
float: left;
margin-top: 5px;
position: relative;
left: 110px;
}
#error
{
color: red;
font-weight: bold;
font-size: 16pt;
}
</style>
</head>
<body>
<div>
<?php
if (isset($_SESSION['error']))
{
echo "<span id=\"error\"><p>" . $_SESSION['error'] . "</p></span>";
unset($_SESSION['error']);
}
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>
<label>ID</label>
<input type="text" name="id" /><br />
<label>Video Name</label>
<input type="text" name="name" /><br />
<label>Upload Image</label>
<input type="file" name="video_path" /><br />
<input type="hidden" name="MAX_FILE_SIZE" value="100000000" />
<input type="submit" id="submit" value="Upload" />
</p>
</form>
</div>
</body>
没有为上传的文件大小限制,它可能设置你的情况为100MB。
请参阅PHP change the maximum upload file size关于如何更改限制。
编辑:你必须改变在php.ini这些设置,你不能在你的代码进行修改:
如果你不能改变你的php.ini,你的运气了。您不能在运行时更改这些值;如果上传的文件大于php.ini中指定的值,那么执行达到对ini_set的调用的时间将失败。根据您的需要进行以下设置
可以请你帮我在我的代码中改变它200 MB以上。谢谢:) – user3315446 2014-09-21 09:24:25
我刚刚将最大上传值更改为200 MB。 – user3315446 2014-09-21 09:41:07
@ user3315446也设置post_max_size为200M – Beat 2014-09-21 09:45:01
变化:
max_execution_time = 1800 #Time in seconds your script may run
memory_limit = 512M #max amount of memory a script may use
post_max_size = 128M #Maximum size of POST data that PHP will accept
file_uploads = On # Will never work if this isn't set to On
upload_max_filesize = 256M the maximum size any given uploaded file may have
不要忘了重装阿帕奇(或者,如果你想重新启动)。
查找在php.ini的'upload_max_filesize' http://stackoverflow.com/questions/2184513/php-change-the-maximum-upload-file-size – Mihai 2014-09-21 09:14:16
我认为你最好的办法是签出视频教程,如:https://www.youtube.com/watch?v=PRCobMXhnyw&list=PLfdtiltiRHWFVuW0b79nLbW25P340j1dT。这段代码有很多错误。 1)硬编码链接2)'mysql_ *'而不是'mysqli_ *'或'PDO' 3)使用if($ field =='')'而不是'if(empty($ field))'4) isset($ _ SESSION [])'而不是'!empty($ _ SESSION)'('empty()'与'isset()'相同,但也检查它是否为空)。像@Mihai说的那样,在php.ini中查看最大上传大小,其中有一些需要更改 – SuperDJ 2014-09-21 09:17:11
我能够找到php.ini! – user3315446 2014-09-21 09:28:14