上傳檔案櫃

出自六年制學程
跳轉到: 導覽搜尋

布署備註

○、待施工

  1. copyIndex_thumb.php 和 thumb.php:兩個檔內容差不多,不知道幹什麼?把 jendo.pensieveImg 儲思盆圖照,撐出九千多筆
    • 芸伍2024.03.08標註 已解決 建議留thumb.php即可
  2. drawword.png ?
    • 芸伍2024.03.08標註 未知 建議刪除
  3. 影片縮圖
    • 目前在影片資料夾中(\\DS218\web\newspaperCutting\videos),因為firefox無法載入mp4影片,所以又回去尋求FFmpeg的程式碼這條路,但是在linux系統下執行仍然有問題,目前尚無法整合進php檔案中,現在的方法是創建一個screenshot.sh ,在windows系統中進入伺服器,用FFmpeg的方法批次處理影片檔截圖,再存進縮圖資料夾。
    • 已經確定不是換行問題,windows可執行screenshot.sh,linux可執行screenshot_linux.sh,但是問題還是在ffmpeg的程式碼
    • 現在將輸出格式改為 apng 即可輸出,但仍須在作業系統下,取得 root 權限並以命令列才可以執行
      1. 將 /usr/local/bin/ffmpeg 改成 http / http 沒用
      2. 將 /usr/local/bin/ffmpeg 改成 777 也沒用
    • 在 php 檔中仍然無法執行
    • 20230921 更新,若是 mkv 檔案(vp9編碼),即可在 adminNas 下輸出,mp4檔案仍不行
  4. 批次上傳檔案,然後指定資料夾生成縮圖
  5. 引導語
    • 若有空可以多新增一些引導語

一、檔名使用字元

  1. 不禁用「()」:產生縮圖不會發生問題

二、uploadFiles 下,無主的檔案可以顯示「刪」連結,並可以刪掉的清單列表

\uploadFiles\gogopublic\WPND\JWCC\admin.php
\uploadFiles\丁志仁\family\admin.php
\uploadFiles\丁志仁\OCR\admin.php
\uploadFiles\丁志仁\剪報\admin.php
\uploadFiles\丁志仁\簽到領據\admin.php
\uploadFiles\嘉禾書院\徐恕禾\web\upload\admin.php
\uploadFiles\嘉禾書院\龔晉\web\admin.php
\uploadFiles\嘉禾書院\龔晉\web\upload\admin.php
\uploadFiles\嘉禾書院\龔晉\web\upload\images\admin.php
\uploadFiles\嘉禾書院\龔晉\web\upload\images\大鹿林道東線\admin.php
\uploadFiles\海星培力\自主學習典範的論述發展與實踐規畫\丁志仁\admin.php
\uploadFiles\跨校選修\192\admin.php
\uploadFiles\閉恩濡\admin.php
\uploadFiles\閉恩濡\GoGoPublic\admin.php

基本功能

一、權限規畫

index 使用功能admin(登入)使用功能


可視:
1.檔案列表
2.縮圖列表
可操作:
1.補縮圖
2.蒐尋檔案

可視:
1.檔案列表
2.縮圖列表
3.「選檔」「上傳」兩鈕
4.「上 YT 片」鈕
5.「刪」連結
6.「建資料夾」按鈕
可操作:
1.補縮圖
2.蒐尋檔案
3.選檔上傳刪除檔案
4.上傳 youtube 影片捷徑
5.刪除自己上傳的檔案
6.建資料夾
 -----延伸操作-----
7.刪無主檔案
 -----超級使用者-----
8.刪所有人的檔案


可視:
1.檔案列表
2.縮圖列表
3.「選檔」「上傳」兩鈕
可操作:
1.補縮圖
2.蒐尋檔案
3.選檔上傳

二、檔案

(一)全伺服器共用

  1. /GfUploadFiles.php
    • 諸變數:
      1. $linkLikeButton:1×22 的細長點陣圖,水平複製可以模擬按鈕
      2. $iconPath:諸 icon 所在路徑
      3. $entryTypeIcon:檔案種類與 icon 的對照陣列,檔名種類為索引,icon 為值
    • 諸函式:
      -----顯示處理區-----
      1. linkLikeButton($showWords):將連結模擬為按鈕
        -----前置處理區-----
      2. uploadFile:執行上傳動作
        -----檔案列表區-----
      3. entrys:產生子路徑與檔案條目
      4. get_youtube_title($ID):傳回影片的
      5. showDir:秀出檔案與目錄列表,已實作「youtube 影片捷徑項」
      6. imgThumb:製作縮圖到到縮圖資料夾中
      7. addPathsToIndex:新增路徑到索引檔中
  2. searchIndex.php,嵌入 theme.php 中用 '/searchIndex.php?filePath=".$rootFilePath."path_index.txt' 去找到相應的目錄樹索引檔
  3. dirThumb.php:重做一個資料夾的縮圖。嵌入 theme.php 最末的 javascript 呼叫。
  4. /et/class/include/et.js
    • 函式:openWithSelfMain
  5. 儘量將可用的 javascript 函式搬到 uploadFiles.js

(二)全上傳系統共用

  1. common.php
    • 被每一個 index.php 與 admin.php 所載入
    • 諸變數
      1. $omitLogin:全系統免登入
      2. $rootPath:網頁文件根目錄
      3. $rootFilePath:檔案系統根路徑
      4. $maxSize:上傳檔案上限,請查 apache 與 PHP ,上傳上限設定
        以下為jendo.org設定(可在php.ini更動)
          • 上傳檔案大小上限(單一檔案大小)upload_max_filesize = 32M
          • POST 大小上限(所有檔案大小加總)post_max_size = 32M
          • 記憶體用量上限 memory_limit = 128M
          • 最大的上傳允許時間 max_input_time 60
        • Apach2中在這改
          /etc/apache2/mods-available/fcgid.conf 或
          /etc/apache2/conf-enabled 或
          etc/httpd/conf/httpd.conf
          • MaxRequestLen 15728640
      5. $imgSet:圖檔附檔名陣列
      6. $deny:禁止上傳的附檔名
      7. $index_file:索引檔
    • 載入:
      1. 伺服器根路徑下的 GfUploadFiles.php
      2. 伺服器根路徑下的 constant.php
      3. ET 類別的 DB.php
    • 動作:
      1. 依域名定帳密打開 MySQL 資料庫
      2. 讀取存儲的索引檔案
  2. path_index.txt:路徑索引
  3. theme.php
    • 由 index.php 與 admin.php 來載入
    • 通用功能
      1. 「登出」鈕:由 login 類別物件自動產生 input(type=submit)
      2. 「選檔」鈕:以 label,input(type='file') 觸發檔案上傳機制
      3. 「上傳」鈕:input(type=submit)
      4. 「補縮圖」鈕:button(id='thumbButton'),透過 javascript 觸動,觸動 jendo.org/dirThumb.php
        可參考下列網站
      5. 「顯示縮圖」核取方塊:input(type='checkbox',id='thumb')
        • 每張圖都是一對標籤 <img class='imageIcon'…/><img class='imageThumb'…/>
        • 透過 javascript 觸動 checkbox.checked 只顯示其中的一張
    • admin 功能
      1. 「刪」連結:[<a href='本身?act=del&path=./圖檔名">刪</a>]
      2. 「建資料夾」連結: <a href='本身?act=addDirForm'><span…>建資料夾</span></a>
      3. 輸入「目錄名」form:
if($_REQUEST['act']=='addDirForm'){
	$html1.="<form action='".$_SERVER['PHP_SELF']."' method='post' enctype='multipart/form-data'> 
		目錄名:<input type=text name=dirName value=''/>
		<input type=submit name=act value='建立'/>
	</form>";
}

(三)各路徑自用

  1. index.php
  2. admin.php

(四)跨伺服器共用

三、預覽與下載資料夾中諸檔的相關機制

  1. 切換「須」或「不須」帳號可視
    • fileUsers 資料表負責認證
    • 以 $omitLogin 變數值控制「須」或「不須」帳號認證(放 index.php <?php 之下首行)
      if(isset($_REQUEST['workControl']['omitLogin']) && $_REQUEST['workControl']['omitLogin']==0){$omitLogin=0;}else{$omitLogin=1;}
      1. 只對 index.php 有用,對 admin.php 無效
      2. 預設為未設定此變數
      3. 值為 1 時,該路徑內檔案免登入可視
        http://jendo.org/uploadFiles/gogopublic/DEC/7/
        http://jendo.org/uploadFiles/gogopublic/DEC/11/
  2. 以 index.php 達成檔案列表
  3. 以 filePath 資料表控制「路徑」與「擁有者」
  4. 以 $publicOwnership 控制「允許可刪無主檔案的目錄」(放 admin.php 首行)

四、批次布署目錄樹下的諸檔

  1. changephp.php:布署新版的 index.php 與 admin.php
    • index.php 第 2 行保留 $omitLogin 指示,待實作
    • admin.php 第 2 行保留 $publicOwnership 指示,待實作
  2. copy_admin.php:布署新版 admin.php 到諸路徑,用 scandir 構成遞迴遍歷處理

五、上傳 youtube 影片

  1. 屬強化功能, admin.php 才有, index.php 沒有
  2. 目前只有 /uploadFiles/gogopublic/WPND/JWCC/ 和 /uploadFiles/ 兩資料夾之下的 admin.php 才有此功能
  3. 按「上 YT 片」按鈕,並輸入 youtube 影片 ID 後,會去抓此片 1280×720 的縮圖,來放在目前的路徑,並命名為「YT_影片ID.jpg」
    • admin.php ,請去看前置處理的第二段:「$_POST['act']=='上片'」
      1. 取影片縮圖
      2. 放目前的路徑
      3. 命名為「YT_影片ID.jpg」
      4. 插入 webContent.filePath 表, videoid 欄賦值
      5. 做縮圖,確定已成功
      6. 加入索引檔
    • /GfUploadFiles.php 中
      1. showDir 函式
      2. 處理 YT 影片捷徑
        • 已新增 img 標籤中的 title 屬性,滑過就可以顯示該影片標題
      3. 一般 jpg 處理須剔除 YT影片捷徑
    • theme.php
      1. 「linkLikeButton('上 YT 片')」偽按鈕,送出「act=uploadYTVedioForm」,觸發:
      2. 以「Youtube影片ID」上片表單,然後再觸發 admin.php 中的前置處理「$_POST['act']=='上片'」

擴充功能

一、補縮圖

  1. dirThumb
  2. treeThumb

二、蒐尋功能

(一)程式列表與簡介

  1. save.php
    • 本程式碼是用來建立 FTP 伺服器上指定路徑下的檔案路徑索引,並將索引儲存到一個檔案中。
      為後臺手動建立初始索引的程式,一般來說並不會使用,普通的新增與刪除會加在admin.php、index.php中
      以下是程式碼的簡單介紹:
    1. 定義伺服器資訊:
      • $ftp_server: FTP 伺服器的地址。
      • $ftp_user: 用來登入 FTP 的使用者名稱。
      • $ftp_password: 用來登入 FTP 的密碼。
      • $remote_path: 遠端伺服器上欲建立索引的路徑。
    2. 連線 FTP 伺服器:
      • $conn_id使用 ftp_connect 函數建立與 FTP 伺服器的連線。
      • 使用 ftp_login 函數登入 FTP 帳號。
      • 建立檔案路徑索引:
    3. 定義一個空陣列 $index 用來儲存檔案路徑索引。
      • 使用 buildFilePathIndex 函數遞迴地建立檔案路徑索引。
      • 將建立的索引陣列序列化後,使用 file_put_contents 存入指定的檔案(在這裡是 path_index.txt)。
    4. buildFilePathIndex 函數:
      • 接受 FTP 連線資源 $conn_id、當前路徑 $current_path,以及檔案路徑索引陣列 $index。
      • 使用 ftp_nlist 函數取得指定路徑下的檔案列表。
      • 遞迴處理檔案列表,並將檔案路徑加入索引陣列。
      • 如果檔案是目錄,則遞迴呼叫自身處理該目錄。
  2. searchIndex.php
    • 本程式碼是一個使用RWD CSS設計的基本 HTML 網頁,用來實現資源池搜尋的功能。
      本程式碼實現了一個簡單的搜尋介面,使用者可以輸入搜尋文字,系統將根據事先建立的檔案路徑索引找到相符合的檔案路徑,然後顯示在網頁上。
      以下是對程式碼的簡單介紹:
    1. 使用了一個 <form> 表單,使用 POST 方法提交數據。
      • 包括一個輸入框(<input type="text" id="search_text" name="search_text">)和一個提交按鈕(<input type="submit" value="搜尋">)。
    2. PHP 功能:
    3. 使用了 PHP 代碼區塊處理表單提交的數據。
      • 如果接收到 POST 數據,程式會讀取搜尋文字,然後使用事先建立的檔案路徑索引進行搜尋,並輸出符合搜尋條件的結果。
      • 結果以超連結的形式顯示,指向找到的檔案路徑。
  3. path_index.txt
    • 本檔案為儲存uploadFiles各索引的檔案,儲存方式為PHP序列化

資料表

嘉禾書院(學生使用)

/constant.php

  • 用 substr(urldecode($_SERVER['REQUEST_URI']),0,25)=='/uploadFiles/嘉禾書院' 判斷是否為嘉禾書院,若是
    1. 使用嘉禾書院專屬資料庫帳號,管嘉禾書院專屬資料夾 jahoschool
    2. 該帳號對 webContent.fileUsers 的表和欄都有 select 權限
    3. 該帳號對 webContent.filePath 的表有 select,Insert,Update,Delete 權限,對欄有 select,Insert,Update 權限

其他帳號(後台管理者使用)

對 webContent.* 有廣泛的權限

程式

另一版 admin.php 程式

http://jendo.org/uploadFiles/丁志仁/剪報/ 之下

對用 FTP 上傳檔也能產生「刪」連結

三程式

index.php與admin.php

  1. include 'common.php';
    • common.php主要是定義參考路徑、檔案大小以及不同的function
      目前有兩種common.php,分別可以連結不同路徑。
      1. '/volume1/web/uploadFiles/common.php'
      2. '/volume1/web/qlFiles/common.php'。
  2. include 'constant.php';
    • constant.php:引進更上一層的參考路徑、資料表與連結頁面
  3. 錯誤訊息不同
    • 用不同錯誤訊息警示管理不同層級的人
  4. include 'login.php';
    • login.php:依據不同資料表判斷權限是否可以登入
  5. new login;
    • 製作一個新的登入嘗試
  6. include 'theme.php';
    • 藉由參考路徑設定主題,決定不同的banner與圖片
  7. echo $html1;
  8. 指定認證表並 logon();
    • 也可以預設未登入可瀏覽($omitLogin!=1)
  9. if(驗證不過){echo 錯誤訊息;}
    else{
    ①admin.php有前置處理
    ②跑上傳函式uploadFile();
    ③echo showDir($admin,$root);根目錄和admin.php各有不同
    }
    • 比如說showDir(__DIR__,0,1) 後面的數字第一個是判斷是否為admin,第二個是判斷是否是根目錄
  10. echo $html2;
  11. admin.php主要多了建立資料夾與刪除檔案的function
    其中包括部屬縮圖資料夾(thumb,thumb200)與基礎程式(index.php,admin.php)、刪除時一並刪除
  12. removePathFromIndex
    • 在admin.php中,在刪除檔案時一並刪除path_index.txt中的路徑(並判斷是否有縮圖 會一並刪除)
  13. addPathsToIndex
    • 在common.php中,在新增檔案時一並新增路徑至path_index.txt

users.php

  1. include 'constant.php';
  2. 設定錯誤訊息
  3. include 'etable.php';
  4. new etable;
  5. include 'theme.php';
  6. echo $html1;
  7. 設定 sql[0],editable,formValidate 等屬性
  8. 指定認證表並 main();
  9. if(驗證不過){echo 錯誤訊息;}
  10. echo $html2;

工具程式

changephp.php

主要工作為新增檔案或刪除特定資料夾中的檔案

copyIndex_thumb.php

主要工作為新資料夾中的縮圖資料夾(thumb,thumb200)與基礎程式(index.php,admin.php)並縮圖。

  1. 畫字程式
  2. logo.png
  3. 導航列.png
  4. button.png
  5. folder.gif
  6. text.gif
  7. back.gif

共用

  1. theme.php
  2. common.php