【发布时间】:2014-11-15 10:44:20
【问题描述】:
我有一个大学项目,要创建一个虚拟教室,教师可以上传视频讲座供学生访问。
我正在尝试将视频路径保存到数据库中,将视频保存到文件夹中,然后尝试访问它。
有时视频不会上传。尝试保存超过 100 mb 的视频时,路径无法保存在数据库中。如果视频大小较小,则将路径保存到数据库。
我不明白问题出在哪里,因为我试图保存路径而不是视频。
***************这是我的上传脚本***********
<?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>
********************这是我的表单脚本**********
<?php
session_start();
?>
<html>
<head>
<title>Dream in code tutorial</title>
<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>
【问题讨论】:
-
在 php.ini 中查找
upload_max_filesizestackoverflow.com/questions/2184513/… -
我认为对您来说最好的办法是查看视频教程,例如:youtube.com/…。这段代码有很多问题。 1) 硬编码链接 2)
mysql_*而不是mysqli_*或PDO3) 使用if($field == '')而不是if(empty($field))4) 使用isset($_SESSION[])而不是!empty($_SESSION)(empty()与 @98765433 相同@ 但也检查它是否为空)。要像@Mihai 那样回答您的问题,请查看 php.ini 中的最大上传大小,其中有几个需要更改 -
我无法找到 php.ini !
-
Google php.ini 在 Ubuntu 中的位置,或者任何你的操作系统,或者如果你使用 xampp 搜索。
-
我正在使用 mac 操作系统。我只是将上传值更改为 200 MB。我还是不走运。
标签: php html video file-upload upload