2013年12月15日 星期日

PHP : smbwebclient.php 2.9 增強版

如果您的主機只有提供存放網頁服務,卻沒有 FTP 服務可用;又那麼剛好,該主機有提供 Samba 給內部網路連線存取檔案,最最湊巧的是 web server 有 PHP ,這樣,smbwebclient.php 可以是 FTP 的替代方案。

不過,smbwebclient.php 有個不算小的缺點,如果想要 upload 整個資料夾的檔案到主機上,得一個個檔案用滑鼠去點、點、點,應該會加快把手給廢了!

哈!我最近就是遇到這樣的情形,弄得我有一點煩了,於是花了大半天,好好的研究了一下 smbwebclient.php 的程式碼及 smbclient 的參數,將它稍微增強了一下。


這個 smbwebclient.php 在幾年前就玩過,我在 2008 年暑假的一點點記錄:


原作者的程式可以在 sourceforge 中下載:



今天將 smbwebclient.php 2.9 的程式放到 PHP5.3.x 的環境中,才發現它的程式裡用了 split、eregi_replace、eregi ...... 等不再建議使用的函數。已經依錯誤訊息一一用別的函數置換以後,才發現,原來,網站中的  smbwebclient.php 2.9.1 已經針對這一部份修正。但是 2.9.1 應該還會出現一些小錯誤,我一起把它們解決了!

除了小臭蟲去掉以外,當我們要上載一個檔案到主機,必須在 smbwebclient 中先點選功能選單→ 按 "OK" 鈕 → 選擇要上載的檔案 → 按 "OK" 鈕,才能將檔案送出去,實在有一點複雜。所以我加了一點點 Javascript 監聽功能選單 option 的 onChange 事件,如果選擇的功能切換到「建新資料夾」、「上載新的檔案」或是我新加入的「上載新的 tar 檔」,就讓它直接進入下一步驟,簡化操作的流程。

最後則是新增了一個還滿好用的功能:

  • 上載 .tar 檔案,讓 smbclient 可以一次將 .tar 中的所有檔案解開並「還原」到目前所選取的目錄中。

有了這項功能,我們只要先利用類似 7-zip 的工具將要上載的目錄以「tar」的格式壓到 .tar 的檔案中,當我們用 smbwebclint.php 上載後,程式會在呼叫 smbclient 時加入「-Tqx」的參數,這樣一來,smbclient 會幫我們將裡面的檔案解開後,依 .tar 的目錄樹重新展開放到目前的路徑中。 


人家說:「沒魚,蝦也好」,就暫時以 smbwebclient.php 來解決無 FTP 可用的情形,有空再研究一下如何用 drag & drop 的方式來操作 upload。改過的程式就附在底下的連結中。


程式下載



相關文章







沒有留言:

張貼留言

 
© 2009. Design by Pocket