視頻檔案上傳是 PHP 開發中常見的功能需求。雖然本質上視頻也是檔案,可沿用一般檔案上傳邏輯,但視頻檔案通常體積龐大、上傳耗時較久,且 PHP 設定檔對上傳大小有限制。若需更穩健的大檔案上傳方案,建議採用 FTP 上傳方式。本文提供一個完整的視頻上傳實作範例供參考。
';
if ($ok === true) {
echo '' . $message . ' ';
} else {
echo '' . $message . ' ';
}
echo '';
}
// 處理表單提交
$action = isset($_POST['action']) ? $_POST['action'] : '';
$file = isset($_POST['file']) ? $_POST['file'] : '';
if ($file !== '') $file .= '/';
$message_true = '';
$message_false = '';
switch ($action) {
case 'upload':
chmod(FILE_UPLOAD_DIR, 0777);
for ($nb = 1; $nb <= MUILTI_FILE_UPLOAD; $nb++) {
// 檢查檔案是否存在且大小大於 10 bytes
if ($_FILES['file_' . $nb]['size'] >= 10) {
// 檢查檔案大小限制
if ($_FILES['file_' . $nb]['size'] <= MAX_SIZE_FILE_UPLOAD) {
// 檢查副檔名是否在黑名單中
$ext = ereg_replace('^[[:alnum:]]([-_.]?[[:alnum:]])*\.', '.', $_FILES['file_' . $nb]['name']);
if (!in_array($ext, $array_extention_interdite)) {
// 取得最終檔名(優先使用用戶指定名稱)
if ($_POST['file_name_' . $nb] !== '') {
$file_name_final = $_POST['file_name_' . $nb] . $ext;
} else {
$file_name_final = $_FILES['file_' . $nb]['name'];
}
// 檔名轉換與過濾
$file_name_final = strtr($file_name_final, 'aaaaaa', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$file_name_final = preg_replace('/([^.a-z0-9]+)/i', '_', $file_name_final);
$_FILES['file_' . $nb]['name'] = $file_name_final;
// 執行上傳
move_uploaded_file(
$_FILES['file_' . $nb]['tmp_name'],
FILE_UPLOAD_DIR . $file . $file_name_final
);
$message_true .= '檔案上傳成功:' . $_FILES['file_' . $nb]['name'] . '
';
} else {
$message_false .= '檔案上傳失敗(副檔名不允許):' . $_FILES['file_' . $nb]['name'] . '
';
}
} else {
$message_false .= '檔案大小超過限制 ' . (MAX_SIZE_FILE_UPLOAD / 1000) . 'KB:"' . $_FILES['file_' . $nb]['tmp_name'] . '"
';
}
}
}
break;
}
?>
PHP 檔案上傳
php.ini 中的 upload_max_filesize、post_max_size、max_execution_time、max_input_time 等參數。本範例展示了 PHP 視頻上傳的基礎實作流程,可作為進一步開發的起點。