朱建國(guó)
(同濟(jì)大學(xué) 山東 205109)
隨著人們對(duì)互聯(lián)網(wǎng)的依賴越來越強(qiáng),從互聯(lián)網(wǎng)獲取資源成為一種習(xí)慣,作為信息管理和技術(shù)開發(fā)人員,時(shí)常會(huì)有將大量各類文件資源(文檔、音視頻文件和軟件等)轉(zhuǎn)換和發(fā)布到網(wǎng)上的需求,而該項(xiàng)工作一般只能由計(jì)算機(jī)專業(yè)人員才能完成。當(dāng)然可以通過已有的信息發(fā)布系統(tǒng)進(jìn)行,但一般不能直接批量發(fā)布,發(fā)布效率低,同時(shí)還受已有系統(tǒng)功能和文件格式等的限制。
如果有一套對(duì)大量復(fù)雜文件資源方便的進(jìn)行格式轉(zhuǎn)換和網(wǎng)上發(fā)布的工具,一般操作人員能夠簡(jiǎn)便的完成,可以很好的節(jié)約開發(fā)成本、提高工作效率和降低資源發(fā)布的技術(shù)門檻,同時(shí)對(duì)促進(jìn)資源共享也會(huì)起到了積極的推動(dòng)作用。筆者在對(duì)學(xué)校的精品課程建設(shè)過程中,總結(jié)和開發(fā)了一套基于PHP的對(duì)大量復(fù)雜文件資源格式轉(zhuǎn)換和網(wǎng)上發(fā)布工具,可以很好的解決以上問題,在此與讀者進(jìn)行共享和探討。
通過該設(shè)計(jì)的工具,可以將用戶任意級(jí)文件夾中的各類文件,快捷的轉(zhuǎn)換和發(fā)布到網(wǎng)上。發(fā)布后的資源既要保持原有的顯示效果,又要有很好的兼容性和節(jié)約帶寬以提高瀏覽速度,根據(jù)需要還可以支持下載。
為達(dá)到以上目標(biāo),對(duì)任意級(jí)文件夾的信息可采用自動(dòng)轉(zhuǎn)換為網(wǎng)頁樹的形式,或采用橫縱向結(jié)合的多級(jí)菜單的形式展現(xiàn)。對(duì)各類文檔例如Word、Excel、PowerPoint、PDF、WPS等采用自動(dòng)轉(zhuǎn)換為SWF的方式;對(duì)各類音視頻文件采用轉(zhuǎn)換為FLV的方式;不需要直接查看的文件例如軟件和壓縮文件則采用直接下載的方式。
PHP是一種高效的網(wǎng)絡(luò)編程語言,既可在Web服務(wù)端運(yùn)行,也可做客戶端程序開發(fā),同時(shí)其擴(kuò)展庫提供了豐富的功能。在此項(xiàng)目中既作為整合各類工具的開發(fā)語言,也可以作為轉(zhuǎn)換發(fā)布后的Web服務(wù)端運(yùn)行環(huán)境。
SWFTools是一組用來處理Flash的SWF文件的工具包,包含SWF合并、抽取和解析工具等。本項(xiàng)目中調(diào)用該工具實(shí)現(xiàn)將PDF、JPEG、PNG、AVI、TTF、WAV等文件自動(dòng)轉(zhuǎn)換為SWF文件,PDF文檔和圖片文件等轉(zhuǎn)化為的SWF文件支持分頁加載,用戶瀏覽體驗(yàn)更好。
FlashPaper是Macromedia推出的一款電子文檔類工具,它采用的是虛擬打印機(jī)的轉(zhuǎn)換方式,能夠?qū)⑺锌芍苯硬榭吹奈臋n轉(zhuǎn)換為SWF文件。該項(xiàng)目中調(diào)用該工具,將SWFTools不支持轉(zhuǎn)換SWF的文件自動(dòng)的轉(zhuǎn)換為SWF文件。
DTree是由JavaScript編寫的開源樹形菜單組件,不需要復(fù)雜的操作即可生產(chǎn),同時(shí)支持動(dòng)態(tài)從數(shù)據(jù)庫引入數(shù)據(jù)。該項(xiàng)目中使用DTree展現(xiàn)原始文件的目錄樹結(jié)構(gòu)。
文件目錄樹的轉(zhuǎn)換采用PHP遞歸讀取本地文件所在的文件夾(也可采用BAT批處理的DOS命令DIR /B /S重定向到文件,PHP再讀取文件分析的方法),生成符合DTree調(diào)用語法的任意級(jí)樹形JS代碼。如果文件夾級(jí)數(shù)不超過四級(jí),也可以自動(dòng)生成橫縱向結(jié)合的菜單形式展現(xiàn)。
為保障系統(tǒng)的兼容性,該工具可通過PHP將漢字的文件夾名和文件名轉(zhuǎn)換為拼音存儲(chǔ)。為避免轉(zhuǎn)換后文件和文件夾重名,可在轉(zhuǎn)換后的拼音名后追加增一數(shù)字或隨機(jī)數(shù)字,為方便文件夾和文件排序,可在原始文件和文件夾名前增加01、02等編號(hào)。
SWFTo o l s工具裝好后,支持可視化界面轉(zhuǎn)換SWF,也可通過命令行方式調(diào)用“C:SWFToolspdf2swf.exe "D:file1.pdf" -o "D:ile1page%%.swf" -f -T 9 -t -s storeallcharacters”轉(zhuǎn)換為分頁的SWF。同樣,F(xiàn)lashPaper也既支持可視化界面轉(zhuǎn)換SWF,也可命令行方式調(diào)用“C:FlashPaper2FlashPrinter.exe "D: file1.doc" -o "D:file1.swf"轉(zhuǎn)換為SWF。以上命令需根據(jù)需要修改工具安裝目錄和文檔存放目錄。
通過PHP讀取的文件路徑和配置文件中的指定的工具所在目錄等信息,組裝以上命令并存放在BAT批處理文件中。自動(dòng)轉(zhuǎn)換SWF時(shí),編寫入口的BAT程序,先后調(diào)用以上PHP程序,再調(diào)用PHP程序生成的BAT批處理即可。
目前視頻文件格式較多,而網(wǎng)絡(luò)上FLV視頻文件對(duì)帶寬占用小和兼容性較好,可將其他視頻轉(zhuǎn)換為FLV文件發(fā)布,鑒于該項(xiàng)轉(zhuǎn)換耗時(shí)長(zhǎng)和轉(zhuǎn)換中可能出現(xiàn)問題,該轉(zhuǎn)換可通過第三方工具單獨(dú)批量操作,建議不集成到與SWF一樣的自動(dòng)轉(zhuǎn)換,通過PHP自動(dòng)生成調(diào)用FLV文件的SWF播放器代碼即可。當(dāng)然,MPEG、RMVB等視頻格式文件也可以不轉(zhuǎn)換,通過PHP自動(dòng)生成配有調(diào)用視頻文件播放器的代碼。
軟件和壓縮文件等不需要直接查看,可通過PHP自動(dòng)拷貝到目標(biāo)位置,轉(zhuǎn)化后的目錄樹或菜單中增加下載的超級(jí)鏈接即可。
以上用戶文件資源轉(zhuǎn)換或拷貝后,還需要框架頁面、調(diào)用FLV等視頻文件的SWF組件等相關(guān)系統(tǒng)文件,這些文件相對(duì)固定,可先準(zhǔn)備一份,自動(dòng)轉(zhuǎn)換SWF等文件時(shí),通過PHP自動(dòng)拷貝到目標(biāo)位置即可。
通過以上步驟將原始文件資源轉(zhuǎn)換后,即生成相對(duì)獨(dú)立的資源網(wǎng)站,含網(wǎng)站程序文件和轉(zhuǎn)換后的資源文件。因生成的頁面主要為靜態(tài)HTML和JS等代碼,因此只要支持HTTP服務(wù)即可正常瀏覽。根據(jù)需要,生成的資源網(wǎng)站可適當(dāng)使用PHP腳本,已提高網(wǎng)站的靈活性。
因Fl a s h Pa p e r等工具的限制,目前該項(xiàng)目只支持在Windows環(huán)境下運(yùn)行。使用PHP的客戶端開發(fā)功能,則只需要將php.exe、php5ts.dll和php.ini文件打包到項(xiàng)目程序中即可運(yùn)行。
圖1為以橫縱向結(jié)合的菜單形式展現(xiàn)的轉(zhuǎn)化后資源網(wǎng)站,圖2為以無限級(jí)樹形展現(xiàn)的轉(zhuǎn)換后資源網(wǎng)站。該效果為FlashPaper轉(zhuǎn)換的SWF,因篇幅限制SWFTools轉(zhuǎn)換的分頁SWF和FLV等效果在此不作具體效果展示。
圖1 轉(zhuǎn)換后的資源網(wǎng)站(菜單形式展現(xiàn))
圖2 轉(zhuǎn)換后的資源網(wǎng)站(樹形展現(xiàn))
[1]袁鑫. PHP開發(fā)從入門到精通[M] 中國(guó)水利水電出版社2010:194-198
[2]Davey Shafik. PHP深度分析:101個(gè)核心技巧、竅門和問題解決方法[M] 中國(guó)水利水電出版社 2010:268-271
[3]jQuery MiniUI,Ajax快速開發(fā)[Z] www.open-open.com
[4]SWF manipulation and generation utilities[z]www.swftools.org