上傳檔案櫃:修訂版本之間的差異
出自六年制學程
(→三程式) |
(→布署備註) |
||
(未顯示2位用戶所作出之119次版本) | |||
第 1 行: | 第 1 行: | ||
[[分類:LiteSite]] | [[分類:LiteSite]] | ||
+ | ==布署備註== | ||
+ | ===○、待施工=== | ||
+ | #copyIndex_thumb.php 和 thumb.php:兩個檔內容差不多,不知道幹什麼?把 jendo.pensieveImg 儲思盆圖照,撐出九千多筆 | ||
+ | #*<span style="color:red">芸伍2024.03.08標註 已解決 建議留thumb.php即可</span> | ||
+ | #drawword.png ? | ||
+ | #*<span style="color:red">芸伍2024.03.08標註 未知 建議刪除</span> | ||
+ | #影片縮圖 | ||
+ | #*目前在影片資料夾中(\\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 | ||
+ | |||
+ | ==基本功能== | ||
+ | ===一、權限規畫=== | ||
+ | <table class=nicetable> | ||
+ | <tr><th colspan=2>index 使用功能</th><th>admin(登入)使用功能</th></tr> | ||
+ | <tr><th>免<br/>登<br/>入</th><td> | ||
+ | '''可視:'''<br/> | ||
+ | 1.檔案列表<br/> | ||
+ | 2.縮圖列表<br/> | ||
+ | '''可操作:'''<br/> | ||
+ | 1.補縮圖<br/> | ||
+ | 2.蒐尋檔案 | ||
+ | </td><td rowspan=2> | ||
+ | '''可視:'''<br/> | ||
+ | 1.檔案列表<br/> | ||
+ | 2.縮圖列表<br/> | ||
+ | 3.「選檔」「上傳」兩鈕<br/> | ||
+ | 4.「上 YT 片」鈕<br/> | ||
+ | 5.「刪」連結<br/> | ||
+ | 6.「建資料夾」按鈕<br/> | ||
+ | '''可操作:'''<br/> | ||
+ | 1.補縮圖<br/> | ||
+ | 2.蒐尋檔案<br/> | ||
+ | 3.選檔上傳刪除檔案<br/> | ||
+ | 4.上傳 youtube 影片捷徑<br/> | ||
+ | 5.刪除自己上傳的檔案<br/> | ||
+ | 6.建資料夾<br/> -----延伸操作-----<br/> | ||
+ | 7.刪無主檔案<br/> -----超級使用者-----<br/> | ||
+ | 8.刪所有人的檔案 | ||
+ | </td></tr> | ||
+ | <tr><th>登<br/>入</th><td> | ||
+ | '''可視:'''<br/> | ||
+ | 1.檔案列表<br/> | ||
+ | 2.縮圖列表<br/> | ||
+ | 3.「選檔」「上傳」兩鈕<br/> | ||
+ | '''可操作:'''<br/> | ||
+ | 1.補縮圖<br/> | ||
+ | 2.蒐尋檔案<br/> | ||
+ | 3.選檔上傳 | ||
+ | </td></tr> | ||
+ | </table> | ||
+ | |||
+ | ===二、檔案=== | ||
+ | ====(一)全伺服器共用==== | ||
+ | # /GfUploadFiles.php | ||
+ | #*諸變數: | ||
+ | #*#$linkLikeButton:1×22 的細長點陣圖,水平複製可以模擬按鈕 | ||
+ | #*#$iconPath:諸 icon 所在路徑 | ||
+ | #*#$entryTypeIcon:檔案種類與 icon 的對照陣列,檔名種類為索引,icon 為值 | ||
+ | #*諸函式: | ||
+ | #*::-----顯示處理區----- | ||
+ | #*#linkLikeButton($showWords):將連結模擬為按鈕<br/>-----前置處理區----- | ||
+ | #*#uploadFile:執行上傳動作<br/>-----檔案列表區----- | ||
+ | #*#entrys:產生子路徑與檔案條目 | ||
+ | #*#get_youtube_title($ID):傳回影片的 | ||
+ | #*#showDir:秀出檔案與目錄列表,<span style='color:brown'>已實作「youtube 影片捷徑項」</span> | ||
+ | #*#imgThumb:製作縮圖到到縮圖資料夾中 | ||
+ | #*#addPathsToIndex:新增路徑到索引檔中 | ||
+ | # searchIndex.php,嵌入 theme.php 中用 '/searchIndex.php?filePath=".$rootFilePath."path_index.txt' 去找到相應的目錄樹索引檔 | ||
+ | # dirThumb.php:重做一個資料夾的縮圖。嵌入 theme.php 最末的 javascript 呼叫。 | ||
+ | # /et/class/include/et.js | ||
+ | #*函式:openWithSelfMain | ||
+ | # <span style='color:brown'>儘量將可用的 javascript 函式搬到 uploadFiles.js</span> | ||
+ | |||
+ | ====(二)全上傳系統共用==== | ||
+ | # common.php | ||
+ | #*被每一個 index.php 與 admin.php 所載入 | ||
+ | #*諸變數 | ||
+ | #*#$omitLogin:全系統免登入 | ||
+ | #*#$rootPath:網頁文件根目錄 | ||
+ | #*#$rootFilePath:檔案系統根路徑 | ||
+ | #*#$maxSize:上傳檔案上限,<span style='color:brown'>請查 apache 與 PHP ,上傳上限設定</span><br/>以下為jendo.org設定(可在php.ini更動) | ||
+ | #*#**上傳檔案大小上限(單一檔案大小)upload_max_filesize = 32M | ||
+ | #*#**POST 大小上限(所有檔案大小加總)post_max_size = 32M | ||
+ | #*#**記憶體用量上限 memory_limit = 128M | ||
+ | #*#**最大的上傳允許時間 max_input_time 60 | ||
+ | #*#*Apach2中在這改 <br/> /etc/apache2/mods-available/fcgid.conf 或 <br/>/etc/apache2/conf-enabled 或 <br/> 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<br/>可參考下列網站 | ||
+ | #*#*http://gogopublic.net/ggp/img/thumb.php<br/>http://jendo.org/uploadFiles/thumb.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: | ||
+ | <pre style='margin-left:84pt;'>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>"; | ||
+ | }</pre> | ||
+ | |||
+ | ====(三)各路徑自用==== | ||
+ | #index.php | ||
+ | #admin.php | ||
+ | |||
+ | ====(四)跨伺服器共用==== | ||
+ | |||
+ | ===三、預覽與下載資料夾中諸檔的相關機制=== | ||
+ | #切換「須」或「不須」帳號可視 | ||
+ | #* fileUsers 資料表負責認證 | ||
+ | #* 以 $omitLogin 變數值控制「須」或「不須」帳號認證(放 index.php <?php 之下首行)<br/><pre>if(isset($_REQUEST['workControl']['omitLogin']) && $_REQUEST['workControl']['omitLogin']==0){$omitLogin=0;}else{$omitLogin=1;}</pre> | ||
+ | #*#只對 index.php 有用,對 admin.php 無效 | ||
+ | #*#預設為未設定此變數 | ||
+ | #*#值為 1 時,該路徑內檔案免登入可視<br/>http://jendo.org/uploadFiles/gogopublic/DEC/7/<br/>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 欄賦值 | ||
+ | #*# 做縮圖,<span style='color:brown'>確定已成功</span> | ||
+ | #*# 加入索引檔 | ||
+ | #* /GfUploadFiles.php 中 | ||
+ | #*# showDir 函式 | ||
+ | #*# 處理 YT 影片捷徑 | ||
+ | #*#*已新增 img 標籤中的 title 屬性,滑過就可以顯示該影片標題 | ||
+ | #*# 一般 jpg 處理須剔除 YT影片捷徑 | ||
+ | #* theme.php | ||
+ | #*# 「linkLikeButton('上 YT 片')」偽按鈕,送出「act=uploadYTVedioForm」,觸發: | ||
+ | #*# 以「Youtube影片ID」上片表單,然後再觸發 admin.php 中的前置處理「$_POST['act']=='上片'」 | ||
+ | |||
+ | ==擴充功能== | ||
+ | ===一、補縮圖=== | ||
+ | # dirThumb | ||
+ | # treeThumb | ||
+ | |||
+ | ===二、蒐尋功能=== | ||
+ | ====(一)程式列表與簡介==== | ||
+ | #save.php | ||
+ | #*本程式碼是用來建立 FTP 伺服器上指定路徑下的檔案路徑索引,並將索引儲存到一個檔案中。<br/><span style="color:red">為後臺手動建立初始索引的程式,一般來說並不會使用,普通的新增與刪除會加在admin.php、index.php中</span><br/>以下是程式碼的簡單介紹: | ||
+ | ##定義伺服器資訊: | ||
+ | ##*$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 函數取得指定路徑下的檔案列表。 | ||
+ | ##*遞迴處理檔案列表,並將檔案路徑加入索引陣列。 | ||
+ | ##*如果檔案是目錄,則遞迴呼叫自身處理該目錄。 | ||
+ | #[http://jendo.org/searchIndex.php searchIndex.php] | ||
+ | #*本程式碼是一個使用RWD CSS設計的基本 HTML 網頁,用來實現資源池搜尋的功能。<br/>本程式碼實現了一個簡單的搜尋介面,使用者可以輸入搜尋文字,系統將根據事先建立的檔案路徑索引找到相符合的檔案路徑,然後顯示在網頁上。<br/>以下是對程式碼的簡單介紹: | ||
+ | ##使用了一個 <form> 表單,使用 POST 方法提交數據。 | ||
+ | ##*包括一個輸入框(<input type="text" id="search_text" name="search_text">)和一個提交按鈕(<input type="submit" value="搜尋">)。 | ||
+ | ##PHP 功能: | ||
+ | ##使用了 PHP 代碼區塊處理表單提交的數據。 | ||
+ | ##*如果接收到 POST 數據,程式會讀取搜尋文字,然後使用事先建立的檔案路徑索引進行搜尋,並輸出符合搜尋條件的結果。 | ||
+ | ##*結果以超連結的形式顯示,指向找到的檔案路徑。 | ||
+ | #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==== | ====index.php與admin.php==== | ||
#include 'common.php'; | #include 'common.php'; | ||
+ | #*common.php主要是定義參考路徑、檔案大小以及不同的function<br>目前有兩種common.php,分別可以連結不同路徑。 | ||
+ | #*#'/volume1/web/uploadFiles/common.php' | ||
+ | #*#'/volume1/web/qlFiles/common.php'。 | ||
#include 'constant.php'; | #include 'constant.php'; | ||
+ | #*constant.php:引進更上一層的參考路徑、資料表與連結頁面 | ||
#錯誤訊息不同 | #錯誤訊息不同 | ||
+ | #*用不同錯誤訊息警示管理不同層級的人 | ||
#include 'login.php'; | #include 'login.php'; | ||
− | #new login; | + | #*login.php:依據不同資料表判斷權限是否可以登入 |
+ | #new login; | ||
+ | #*製作一個新的登入嘗試 | ||
#include 'theme.php'; | #include 'theme.php'; | ||
+ | #*藉由參考路徑設定主題,決定不同的banner與圖片 | ||
#echo $html1; | #echo $html1; | ||
#指定認證表並 logon(); | #指定認證表並 logon(); | ||
− | #if(驗證不過){echo 錯誤訊息;}<br/>else{<br/>①admin.php有前置處理<br/> | + | #*也可以預設未登入可瀏覽($omitLogin!=1) |
+ | #if(驗證不過){echo 錯誤訊息;}<br/>else{<br/>①admin.php有前置處理<br/>②跑上傳函式uploadFile();<br/>③echo showDir($admin,$root);根目錄和admin.php各有不同<br/>} | ||
+ | #*比如說showDir(__DIR__,0,1) 後面的數字第一個是判斷是否為admin,第二個是判斷是否是根目錄 | ||
#echo $html2; | #echo $html2; | ||
+ | #admin.php主要多了建立資料夾與刪除檔案的function<br>其中包括部屬縮圖資料夾(thumb,thumb200)與基礎程式(index.php,admin.php)、刪除時一並刪除 | ||
+ | #removePathFromIndex | ||
+ | #*在admin.php中,在刪除檔案時一並刪除path_index.txt中的路徑(並判斷是否有縮圖 會一並刪除) | ||
+ | #addPathsToIndex | ||
+ | #*在common.php中,在新增檔案時一並新增路徑至path_index.txt | ||
+ | |||
====users.php==== | ====users.php==== | ||
#include 'constant.php'; | #include 'constant.php'; | ||
第 24 行: | 第 282 行: | ||
#if(驗證不過){echo 錯誤訊息;} | #if(驗證不過){echo 錯誤訊息;} | ||
#echo $html2; | #echo $html2; | ||
+ | ===工具程式=== | ||
+ | ====changephp.php==== | ||
+ | 主要工作為新增檔案或刪除特定資料夾中的檔案 | ||
+ | ====copyIndex_thumb.php==== | ||
+ | 主要工作為新資料夾中的縮圖資料夾(thumb,thumb200)與基礎程式(index.php,admin.php)並縮圖。 | ||
===圖=== | ===圖=== |
2024年3月13日 (三) 12:23的最新修訂版本
布署備註
○、待施工
- 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