上傳檔案櫃
出自六年制學程
布署備註
○、待施工
- copyIndex_thumb.php 和 thumb.php:兩個檔內容差不多,不知道幹什麼?把 jendo.pensieveImg 儲思盆圖照,撐出九千多筆
- 芸伍2024.03.08標註 已解決 建議留thumb.php即可
- drawword.png ?
- 芸伍2024.03.08標註 未知 建議刪除
- 影片縮圖
- 目前在影片資料夾中(\\DS218\web\newspaperCutting\videos),因為firefox無法載入mp4影片,所以又回去尋求FFmpeg的程式碼這條路,但是在linux系統下執行仍然有問題,目前尚無法整合進php檔案中,現在的方法是創建一個screenshot.sh ,在windows系統中進入伺服器,用FFmpeg的方法批次處理影片檔截圖,再存進縮圖資料夾。
- 已經確定不是換行問題,windows可執行screenshot.sh,linux可執行screenshot_linux.sh,但是問題還是在ffmpeg的程式碼
- 現在將輸出格式改為 apng 即可輸出,但仍須在作業系統下,取得 root 權限並以命令列才可以執行
- 將 /usr/local/bin/ffmpeg 改成 http / http 沒用
- 將 /usr/local/bin/ffmpeg 改成 777 也沒用
- 在 php 檔中仍然無法執行
- 20230921 更新,若是 mkv 檔案(vp9編碼),即可在 adminNas 下輸出,mp4檔案仍不行
- 批次上傳檔案,然後指定資料夾生成縮圖
- 引導語
- 若有空可以多新增一些引導語
一、檔名使用字元
- 不禁用「()」:產生縮圖不會發生問題
二、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(登入)使用功能 | |
---|---|---|
免 登 入 |
可視: |
可視: |
登 入 |
可視: |
二、檔案
(一)全伺服器共用
- /GfUploadFiles.php
- 諸變數:
- $linkLikeButton:1×22 的細長點陣圖,水平複製可以模擬按鈕
- $iconPath:諸 icon 所在路徑
- $entryTypeIcon:檔案種類與 icon 的對照陣列,檔名種類為索引,icon 為值
- 諸函式:
- -----顯示處理區-----
- linkLikeButton($showWords):將連結模擬為按鈕
-----前置處理區----- - uploadFile:執行上傳動作
-----檔案列表區----- - entrys:產生子路徑與檔案條目
- get_youtube_title($ID):傳回影片的
- showDir:秀出檔案與目錄列表,已實作「youtube 影片捷徑項」
- imgThumb:製作縮圖到到縮圖資料夾中
- addPathsToIndex:新增路徑到索引檔中
- 諸變數:
- searchIndex.php,嵌入 theme.php 中用 '/searchIndex.php?filePath=".$rootFilePath."path_index.txt' 去找到相應的目錄樹索引檔
- dirThumb.php:重做一個資料夾的縮圖。嵌入 theme.php 最末的 javascript 呼叫。
- /et/class/include/et.js
- 函式:openWithSelfMain
- 儘量將可用的 javascript 函式搬到 uploadFiles.js
(二)全上傳系統共用
- common.php
- 被每一個 index.php 與 admin.php 所載入
- 諸變數
- $omitLogin:全系統免登入
- $rootPath:網頁文件根目錄
- $rootFilePath:檔案系統根路徑
- $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
- $imgSet:圖檔附檔名陣列
- $deny:禁止上傳的附檔名
- $index_file:索引檔
- 載入:
- 伺服器根路徑下的 GfUploadFiles.php
- 伺服器根路徑下的 constant.php
- ET 類別的 DB.php
- 動作:
- 依域名定帳密打開 MySQL 資料庫
- 讀取存儲的索引檔案
- path_index.txt:路徑索引
- theme.php
- 由 index.php 與 admin.php 來載入
- 通用功能
- 「登出」鈕:由 login 類別物件自動產生 input(type=submit)
- 「選檔」鈕:以 label,input(type='file') 觸發檔案上傳機制
- 「上傳」鈕:input(type=submit)
- 「補縮圖」鈕:button(id='thumbButton'),透過 javascript 觸動,觸動 jendo.org/dirThumb.php
可參考下列網站 - 「顯示縮圖」核取方塊:input(type='checkbox',id='thumb')
- 每張圖都是一對標籤 <img class='imageIcon'…/><img class='imageThumb'…/>
- 透過 javascript 觸動 checkbox.checked 只顯示其中的一張
- admin 功能
- 「刪」連結:[<a href='本身?act=del&path=./圖檔名">刪</a>]
- 「建資料夾」連結: <a href='本身?act=addDirForm'><span…>建資料夾</span></a>
- 輸入「目錄名」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>"; }
(三)各路徑自用
- index.php
- admin.php
(四)跨伺服器共用
三、預覽與下載資料夾中諸檔的相關機制
- 切換「須」或「不須」帳號可視
- fileUsers 資料表負責認證
- 以 $omitLogin 變數值控制「須」或「不須」帳號認證(放 index.php <?php 之下首行)
if(isset($_REQUEST['workControl']['omitLogin']) && $_REQUEST['workControl']['omitLogin']==0){$omitLogin=0;}else{$omitLogin=1;}
- 只對 index.php 有用,對 admin.php 無效
- 預設為未設定此變數
- 值為 1 時,該路徑內檔案免登入可視
http://jendo.org/uploadFiles/gogopublic/DEC/7/
http://jendo.org/uploadFiles/gogopublic/DEC/11/
- 以 index.php 達成檔案列表
- 以 filePath 資料表控制「路徑」與「擁有者」
- 以 $publicOwnership 控制「允許可刪無主檔案的目錄」(放 admin.php 首行)
四、批次布署目錄樹下的諸檔
- changephp.php:布署新版的 index.php 與 admin.php
- index.php 第 2 行保留 $omitLogin 指示,待實作
- admin.php 第 2 行保留 $publicOwnership 指示,待實作
- copy_admin.php:布署新版 admin.php 到諸路徑,用 scandir 構成遞迴遍歷處理
五、上傳 youtube 影片
- 屬強化功能, admin.php 才有, index.php 沒有
- 目前只有 /uploadFiles/gogopublic/WPND/JWCC/ 和 /uploadFiles/ 兩資料夾之下的 admin.php 才有此功能
- 按「上 YT 片」按鈕,並輸入 youtube 影片 ID 後,會去抓此片 1280×720 的縮圖,來放在目前的路徑,並命名為「YT_影片ID.jpg」
- admin.php ,請去看前置處理的第二段:「$_POST['act']=='上片'」
- 取影片縮圖
- 放目前的路徑
- 命名為「YT_影片ID.jpg」
- 插入 webContent.filePath 表, videoid 欄賦值
- 做縮圖,確定已成功
- 加入索引檔
- /GfUploadFiles.php 中
- showDir 函式
- 處理 YT 影片捷徑
- 已新增 img 標籤中的 title 屬性,滑過就可以顯示該影片標題
- 一般 jpg 處理須剔除 YT影片捷徑
- theme.php
- 「linkLikeButton('上 YT 片')」偽按鈕,送出「act=uploadYTVedioForm」,觸發:
- 以「Youtube影片ID」上片表單,然後再觸發 admin.php 中的前置處理「$_POST['act']=='上片'」
- admin.php ,請去看前置處理的第二段:「$_POST['act']=='上片'」
擴充功能
一、補縮圖
- dirThumb
- treeThumb
二、蒐尋功能
(一)程式列表與簡介
- save.php
- 本程式碼是用來建立 FTP 伺服器上指定路徑下的檔案路徑索引,並將索引儲存到一個檔案中。
為後臺手動建立初始索引的程式,一般來說並不會使用,普通的新增與刪除會加在admin.php、index.php中
以下是程式碼的簡單介紹:
- 定義伺服器資訊:
- $ftp_server: FTP 伺服器的地址。
- $ftp_user: 用來登入 FTP 的使用者名稱。
- $ftp_password: 用來登入 FTP 的密碼。
- $remote_path: 遠端伺服器上欲建立索引的路徑。
- 連線 FTP 伺服器:
- $conn_id使用 ftp_connect 函數建立與 FTP 伺服器的連線。
- 使用 ftp_login 函數登入 FTP 帳號。
- 建立檔案路徑索引:
- 定義一個空陣列 $index 用來儲存檔案路徑索引。
- 使用 buildFilePathIndex 函數遞迴地建立檔案路徑索引。
- 將建立的索引陣列序列化後,使用 file_put_contents 存入指定的檔案(在這裡是 path_index.txt)。
- buildFilePathIndex 函數:
- 接受 FTP 連線資源 $conn_id、當前路徑 $current_path,以及檔案路徑索引陣列 $index。
- 使用 ftp_nlist 函數取得指定路徑下的檔案列表。
- 遞迴處理檔案列表,並將檔案路徑加入索引陣列。
- 如果檔案是目錄,則遞迴呼叫自身處理該目錄。
- 本程式碼是用來建立 FTP 伺服器上指定路徑下的檔案路徑索引,並將索引儲存到一個檔案中。
- searchIndex.php
- 本程式碼是一個使用RWD CSS設計的基本 HTML 網頁,用來實現資源池搜尋的功能。
本程式碼實現了一個簡單的搜尋介面,使用者可以輸入搜尋文字,系統將根據事先建立的檔案路徑索引找到相符合的檔案路徑,然後顯示在網頁上。
以下是對程式碼的簡單介紹:
- 使用了一個 <form> 表單,使用 POST 方法提交數據。
- 包括一個輸入框(<input type="text" id="search_text" name="search_text">)和一個提交按鈕(<input type="submit" value="搜尋">)。
- PHP 功能:
- 使用了 PHP 代碼區塊處理表單提交的數據。
- 如果接收到 POST 數據,程式會讀取搜尋文字,然後使用事先建立的檔案路徑索引進行搜尋,並輸出符合搜尋條件的結果。
- 結果以超連結的形式顯示,指向找到的檔案路徑。
- 本程式碼是一個使用RWD CSS設計的基本 HTML 網頁,用來實現資源池搜尋的功能。
- path_index.txt
- 本檔案為儲存uploadFiles各索引的檔案,儲存方式為PHP序列化
資料表
嘉禾書院(學生使用)
/constant.php
- 用 substr(urldecode($_SERVER['REQUEST_URI']),0,25)=='/uploadFiles/嘉禾書院' 判斷是否為嘉禾書院,若是
- 使用嘉禾書院專屬資料庫帳號,管嘉禾書院專屬資料夾 jahoschool
- 該帳號對 webContent.fileUsers 的表和欄都有 select 權限
- 該帳號對 webContent.filePath 的表有 select,Insert,Update,Delete 權限,對欄有 select,Insert,Update 權限
其他帳號(後台管理者使用)
對 webContent.* 有廣泛的權限
程式
另一版 admin.php 程式
在 http://jendo.org/uploadFiles/丁志仁/剪報/ 之下
對用 FTP 上傳檔也能產生「刪」連結
三程式
index.php與admin.php
- include 'common.php';
- common.php主要是定義參考路徑、檔案大小以及不同的function
目前有兩種common.php,分別可以連結不同路徑。- '/volume1/web/uploadFiles/common.php'
- '/volume1/web/qlFiles/common.php'。
- common.php主要是定義參考路徑、檔案大小以及不同的function
- include 'constant.php';
- constant.php:引進更上一層的參考路徑、資料表與連結頁面
- 錯誤訊息不同
- 用不同錯誤訊息警示管理不同層級的人
- include 'login.php';
- login.php:依據不同資料表判斷權限是否可以登入
- new login;
- 製作一個新的登入嘗試
- include 'theme.php';
- 藉由參考路徑設定主題,決定不同的banner與圖片
- echo $html1;
- 指定認證表並 logon();
- 也可以預設未登入可瀏覽($omitLogin!=1)
- if(驗證不過){echo 錯誤訊息;}
else{
①admin.php有前置處理
②跑上傳函式uploadFile();
③echo showDir($admin,$root);根目錄和admin.php各有不同
}- 比如說showDir(__DIR__,0,1) 後面的數字第一個是判斷是否為admin,第二個是判斷是否是根目錄
- echo $html2;
- admin.php主要多了建立資料夾與刪除檔案的function
其中包括部屬縮圖資料夾(thumb,thumb200)與基礎程式(index.php,admin.php)、刪除時一並刪除 - removePathFromIndex
- 在admin.php中,在刪除檔案時一並刪除path_index.txt中的路徑(並判斷是否有縮圖 會一並刪除)
- addPathsToIndex
- 在common.php中,在新增檔案時一並新增路徑至path_index.txt
users.php
- include 'constant.php';
- 設定錯誤訊息
- include 'etable.php';
- new etable;
- include 'theme.php';
- echo $html1;
- 設定 sql[0],editable,formValidate 等屬性
- 指定認證表並 main();
- if(驗證不過){echo 錯誤訊息;}
- echo $html2;
工具程式
changephp.php
主要工作為新增檔案或刪除特定資料夾中的檔案
copyIndex_thumb.php
主要工作為新資料夾中的縮圖資料夾(thumb,thumb200)與基礎程式(index.php,admin.php)並縮圖。
圖
- 畫字程式
- logo.png
- 導航列.png
- button.png
- folder.gif
- text.gif
- back.gif
共用
- theme.php
- common.php