2014-09-21 165 views
0

嘿家伙我是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> 

+0

查找在php.ini的'upload_max_filesize' http://stackoverflow.com/questions/2184513/php-change-the-maximum-upload-file-size – Mihai 2014-09-21 09:14:16

+0

我认为你最好的办法是签出视频教程,如: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

+0

我能够找到php.ini! – user3315446 2014-09-21 09:28:14

回答

0

没有为上传的文件大小限制,它可能设置你的情况为100MB。

请参阅PHP change the maximum upload file size关于如何更改限制。

编辑:你必须改变在php.ini这些设置,你不能在你的代码进行修改:

如果你不能改变你的php.ini,你的运气了。您不能在运行时更改这些值;如果上传的文件大于php.ini中指定的值,那么执行达到对ini_set的调用的时间将失败。根据您的需要进行以下设置

+0

可以请你帮我在我的代码中改变它200 MB以上。谢谢:) – user3315446 2014-09-21 09:24:25

+0

我刚刚将最大上传值更改为200 MB。 – user3315446 2014-09-21 09:41:07

+0

@ user3315446也设置post_max_size为200M – Beat 2014-09-21 09:45:01

0

变化:

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 

不要忘了重装阿帕奇(或者,如果你想重新启动)。