PHP和MySQL無疑是最流行的web開發工具之一。其中,PHP負責處理后端邏輯,MySQL用于存儲和管理數據。在現代互聯網應用程序中,視頻已成為一種非常重要的媒體資源。因此,學習如何上傳和處理視頻文件是每個web開發人員都需要掌握的技能。
上傳視頻文件不同于上傳普通文件,因為它們通常比較大。PHP處理大文件上傳的最流行方法是使用分片上傳技術。上傳文件時,將文件分成多個(通常是10-20)小塊,然后一塊一塊地上傳。
if (isset($_POST['submit'])) { // 獲取文件信息 $fileName = $_FILES['video']['name']; $fileSize = $_FILES['video']['size']; $fileType = $_FILES['video']['type']; $tmpName = $_FILES['video']['tmp_name']; // 文件存放路徑 $uploadsDir = './uploads/'; $filePath = $uploadsDir . $fileName; // 檢查目錄是否存在 if (! is_dir($uploadsDir)) { mkdir($uploadsDir); } // 開始分片上傳 $chunkSize = 1024 * 1024; // 每塊1MB $totalChunks = ceil($fileSize / $chunkSize); $currentChunk = isset($_POST['chunk']) ? $_POST['chunk'] : 0; if (isset($_POST['filename'])) { $filePath = $uploadsDir . $_POST['filename']; // 檢查文件是否存在 if (file_exists($filePath)) { $currentChunk = ceil(filesize($filePath) / $chunkSize); } } // 獲取當前塊的內容 $fileChunk = file_get_contents($tmpName); $filePointer = fopen($filePath, 'a'); fwrite($filePointer, $fileChunk); fclose($filePointer); // 返回結果給前端 $result = array( 'fileOK' =>$currentChunk . '/' . $totalChunks, ); header('Content-Type: application/json'); echo json_encode($result); }
上傳視頻后,您可以將相關信息(例如文件名,大小,類型)存儲在數據庫中。當用戶訪問視頻時,可以使用PHP和MySQL檢索它并呈現給用戶。
// 連接到MySQL數據庫 $dbHost = 'localhost'; $dbName = 'test_db'; $dbUser = 'root'; $dbPass = 'password'; $conn = new mysqli($dbHost, $dbUser, $dbPass, $dbName); // 檢查連接是否成功 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // 插入視頻信息到數據庫 $sql = "INSERT INTO videos (name, size, type, path) VALUES ('$fileName', '$fileSize', '$fileType', '$filePath')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "
" . $conn->error; } // 在頁面中顯示視頻 $sql = "SELECT * FROM videos WHERE id = '$id'"; $result = $conn->query($sql); if ($result->num_rows >0) { while($row = $result->fetch_assoc()) { echo ''; echo '' . $row['name'] . '
'; echo '' . $row['size'] . '
'; } } else { echo "0 results"; } $conn->close();
總結而言,PHP和MySQL是處理上傳和呈現視頻的重要工具。通過使用分片上傳技術和將視頻信息存儲在數據庫中,可以輕松地實現具有完美用戶體驗的視頻上傳和呈現。