檔案上傳機制

    • 運行環境說明:
      • 作業系統:ubuntu
      • HTTP 服務器:Apache
      • 設計語言:PHP
      • 網頁存放目錄:/var/www〈以下簡稱:HTTP_PATH〉
      • HTTP 服務帳號:www-data/www-data〈以下簡稱:HTTP_USER〉
      • 上傳檔案存放目錄:
        • $HTTP_PATH/upload〈以下簡稱:UPLOAD_PATH〉
        • $HTTP_USER 權限
      • 語系:UTF-8
  • 情境說明:
      • 在上傳檔案網頁中,指定本機檔案。
      • 如本機檔案 CONTENT-TYPE 為 text/plain text/html ... 等,上傳後會顯示該檔案內容。
      • 其他 CONTENT-TYPE 檔案,則不會顯示。
      • 上傳檔案會存在 $UPLOAD_PATH 目錄下。
    • 上傳檔案網頁:
              • <html> <head> <title>上傳檔案</title> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> </head> <body> <form action="uploadFile.php" method="post" enctype="multipart/form-data"> <table> <tr><td arign="right">本地檔名:</td><td><input type="file" name="uploadFile"></td></tr> <tr><td align="center" colspan="2"><input type="submit" value="上傳"></td></tr> </table> </form> </body> </html>
    • 上傳檔案程式:
              • <html> <head> <title>處理上傳檔案</title> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> </head> <body> <?php if ($_FILES["uploadFile"]["error"] > 0) { echo "錯誤: " . $_FILES["uploadFile"]["error"] . "<br />"; } else { ?> <table border='1'> <tr><td align='right' bgcolor='silver'>上傳</td><td> <?php echo $_FILES["uploadFile"]["name"] ?> </td></tr> <tr><td align='right' bgcolor='silver'>型態</td><td> <?php echo $_FILES["uploadFile"]["type"] ?> </td></tr> <tr><td align='right' bgcolor='silver'>大小</td><td> <?php echo ($_FILES["uploadFile"]["size"] / 1024) ?> Kb </td></tr> <tr><td align='right' bgcolor='silver'>存檔</td><td> <?php echo $_FILES["uploadFile"]["tmp_name"] ?> </td></tr> <?php $tmpFile = $_FILES["uploadFile"]["tmp_name"]; $newFile = getcwd() . "/upload/" . $_FILES["uploadFile"]["name"]; if (file_exists($newFile)) unlink($newFile); move_uploaded_file($tmpFile, $newFile); if (substr($_FILES["uploadFile"]["type"], 0, 4)=="text") { $html_content = file_get_contents($newFile); ?> <tr><td colspan='2' align='left'> <?php echo "<pre>" . htmlspecialchars($html_content) . "</pre>"; ?> </td></tr> <?php } ?> </table> <?php } ?> </body> </html>