簡體   English   中英

將視頻存儲在數據庫中然后檢索它

[英]Storing a video in a database then retrieving it

有人可以告訴我這段代碼做錯了什么,我正在將本地主機連接到名為 video 的數據庫。 然后我將值$videoLocation插入到表位置及其列位置。

我得到的結果是當我打開瀏覽器時

  <?php
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
  ?>

我試圖用這段代碼實現的是,一旦用戶提交視頻,視頻就會出現在我的網頁上。

    <?php        
    $allowedExts = array("jpg", "jpeg", "gif", "png", "mp3", "mp4", "wma");
    $allowType =   array("video/mp4","audio/mp3","audio/wma","image/png","image/gif","image/jpeg");
    $maxSize = 20000000000000;
    $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
    $pathToUpload = 'upload/';

      if( in_array($_FILES["file"]["type"], $allowType) && in_array($extension,   $allowedExts) && $_FILES["file"]["size"] <= $maxSize)
         {
      if ($_FILES["file"]["error"] > 0)
         {
      echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
          else
           {
           echo "Upload: " . $_FILES["file"]["name"] . "<br />";
     echo "Type: " . $_FILES["file"]["type"] . "<br />";
     echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
     echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

     if (file_exists($pathToUpload . $_FILES["file"]["name"]))
     {
         echo $_FILES["file"]["name"] . " already exists. ";
     }
     else
     {
         move_uploaded_file($_FILES["file"]["tmp_name"], $pathToUpload . $_FILES["file"] ["name"]);
          $videoLocation = "upload/".$_FILES['file']['name'];
        // now insert $videoLocation into a database table
        $db = new mysqli('127.0.0.1', 'root', '', 'video');
        INSERT INTO location (location)
        VALUES ($videoLocation)
       //so you can fetch it on whatever page you feel like
             }
       }
       }
           else
          {
          echo "Invalid file";
           }

     ?>  

嘗試這個

$db = new mysqli('127.0.0.1', 'root', '', 'video');
$stmt = $db->prepare("INSERT INTO location (location) VALUES (?)");
$stmt->bind_param('s', $videoLocation);
$stmt->execute();
//so you can fetch it on whatever page you feel like

我最近為想在數據庫中存儲圖像文件的其他人回答了一個問題。 這是如何做到的:

1) 數據庫列必須定義為 longblob。

接下來,代碼使用 PDO 而不是 mysqli。

// database connection...
$dsn = 'mysql:host=localhost;dbname=testmysql';
$username = 'test';
$password = 'test';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$connection = new PDO($dsn, $username, $password, $options);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

然后你需要一個打開的文件句柄,如下所示:

$fileVideo  = fopen($videoLocation,'rb');

然后准備語句並綁定文件:

$stmt = $connection->prepare("INSERT INTO location (location) VALUES (?)");
$stmt->bindParam(1, $fileVideo, PDO::PARAM_LOB);

$connection->beginTransaction();
$stmt->execute();
$connection->commit();
fclose($fileVideo);

我沒有在您的文件上測試上述內容,但與上述類似但名稱更改的原始代碼工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM