【问题标题】:Uploading and retrieving videos from mysql database using php使用php从mysql数据库上传和检索视频
【发布时间】: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_filesize stackoverflow.com/questions/2184513/…
  • 我认为对您来说最好的办法是查看视频教程,例如:youtube.com/…。这段代码有很多问题。 1) 硬编码链接 2) mysql_* 而不是 mysqli_*PDO 3) 使用 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


【解决方案1】:

上传有文件大小限制,在您的情况下可能设置为 100MB。

请参阅PHP change the maximum upload file size,了解如何更改限制。

编辑:您必须在 php.ini 中更改这些设置,您不能在代码中更改它们:

如果您无法更改您的 php.ini,那么您就不走运了。您不能在运行时更改这些值;在执行到达您对 ini_set 的调用时,上传大于 php.ini 中指定值的文件将失败。

【讨论】:

  • 你能帮我把我的代码改成超过 200 MB 吗?谢谢:)
  • 我刚刚将最大上传值更改为 200 mb。
  • @user3315446 也将 post_max_size 设置为 200M
  • 我也改了。但仍然无法上传。
  • @user3315446 是没有上传还是没有存储在数据库中?
【解决方案2】:

根据需要更改以下设置:

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

不要忘记重新加载 apache(或者如果需要,可以重新启动)。

【讨论】:

    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 2012-02-21
    • 2011-08-25
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    相关资源
    最近更新 更多