首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 實作 Word 文件上傳轉 HTML 完整流程

     編輯:PHP 綜合知識

整體架構

  1. 前端上傳頁面(HTML 表單)
  2. 後端接收、儲存、呼叫 COM 元件轉換
  3. 輸出 HTML 檔案供瀏覽

1. 上傳頁面

<!DOCTYPE html>
<html>
<head>
    <meta charset="gb2312">
    <title>Word 檔案上傳</title>
</head>
<body>
    <form action="receivefile.php" method="post" enctype="multipart/form-data">
        <input type="file" name="filename" accept=".doc,.docx">
        <input type="submit" value="上傳並轉換">
    </form>
</body>
</html>

2. 接收與轉換頁面

<?php
// 資料庫連線(範例使用 Access,實務建議改用 MySQL/PDO)
$conn = new COM("ADODB.Connection");
$connStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("person.mdb");
$conn->Open($connStr);

// 上傳目錄
$uploadDir = 'uploads/';
if (!is_dir($uploadDir)) mkdir($uploadDir, 0755, true);

// 處理檔名(移除副檔名)
$originalName = $_FILES['filename']['name'];
$baseName = pathinfo($originalName, PATHINFO_FILENAME);
$ext = pathinfo($originalName, PATHINFO_EXTENSION);
$saveName = $baseName . '.' . $ext;
$savePath = $uploadDir . $saveName;

// 移動暫存檔
move_uploaded_file($_FILES['filename']['tmp_name'], $savePath);

// 呼叫 Word COM 元件轉換
$htmlPath = $savePath; // 輸出 HTML 同目錄
word2html($htmlPath);

function word2html($wFilePath) {
    $word = new COM("Word.Application") or die("無法啟動 MS Word");
    $word->Visible = 0; // 背景執行
    $word->Documents->Open($wFilePath) or die("無法開啟文件");
    
    $htmlPath = substr($wFilePath, 0, -4) . '.html'; // 替換副檔名
    $word->ActiveDocument->SaveAs($htmlPath, 8); // 8 = wdFormatHTML
    $word->Quit(0);
    
    // 釋放 COM 物件
    unset($word);
}

echo "Word 轉 HTML 完成!輸出檔案:$htmlPath";
?>

關鍵技術點

  • COM 元件需求:伺服器必須安裝 Microsoft Word,且 PHP 需啟用 com.allow_dcom,僅限 Windows 環境
  • 權限問題:IIS/Apache 執行身分需有 Word 啟動權限,常需設定 DCOM 權限(dcomcnfg)
  • 效能限制:Word 啟動較慢,不適合高併發;生產環境建議使用 LibreOffice headless 模式或商業轉換 API
  • 安全性:嚴格驗證檔案類型、大小,防止惡意腳本上傳

跨平台替代方案

Linux 環境推薦使用 libreoffice --headless --convert-to html 呼叫命令列轉換,或採用 PhpOffice/PHPWord 純 PHP 解析(功能有限)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved