方法一:使用servlet實現,這種方法很基本。
實現:通過簡單的配置web.xml文件,形成一個web訪問體系,使用了 org.apache.commons.fileupload文件上傳類,實現HttpServlet接口中的三個方法,其中doPost()方法由自己去實現,定義基本參數:如:上傳的格式,大小,文件上傳路徑,和一些錯誤提示輸出信息等等。這個方法很好實現,不過缺點是,文件行數很大,大量的代碼在一個類里面(其實可是試試將實現步驟用一個個的類/方法去實現,但這也花了一些時間,我很少會那樣去做),整體布局不是很好看,再加上注釋,呵呵,整個程序就像綉花一樣了,我不大喜歡這種。項目部署:在程序里面定義上傳路徑,一般這種路徑和項目部署的位置在同一台服務器上面。文件也同時上傳到這台服務器相應的文件夾里面。
方法二:使用經典的struts2框架來做,使用它自己封裝好的fileupload類
使用這種方法除了要配置web.xml文件以外,還需要配置struts.xml文件,這種方法很友好,因為畢竟是框架,所有整體程序有條不紊,后續修改也很好實現。頁面顯示使用的是jsp。這種方法我比較喜歡。項目部署:文件要上傳到哪台服務器,項目就要部署到那台服務器,從這點出發,它就變得不太友好了。如果是向多台服務器上傳文件,那就麻煩了,項目就要部署到多台服務器里面,同時項目之間有很大的耦合性,很繁瑣,稍有問題,程序就出問題了,文件就會上傳不到位,或者失敗。這樣是很不好的。但是還請相信的是,如果是一台服務器需要上傳文件,那么這種方法是很不錯的選擇^_^。
方法三:框架一致,同樣是struts2,但上傳不在使用fileUpload類,采用ftp工具類
這種方法就不想上面第二種方法那么笨拙了,這種方法很簡單,需要一些基本的參數:
fu.connectServer(“ip”, port, “username”, “password”, “上傳路徑”);
使用到commons-net-3.3-src.jar包。特點:第一,這種方法需要linux服務器配置好了ftp服務器才可以使用這個類,所有在使用的時候,一定要看看服務器是不是配置了ftp服務。第二,在使用的時候很容易忽略的一點是不知道ftp服務器使用的是不是通常用的21端口,通常這個端口是可以修改的,例如修改為2121端口等等,我在做文件遠程上傳的使用,使用了connectServer這種方法,把我折騰了很久,一直連不上,最后發現部分不服務器的這個端口是沒有打開的,最后文件上傳成功了,很慚愧。所有大家在使用的時候就一定要注意了。這種方法我最后沒有使用,為啥,ftp開21端口很不安全,這樣方法就最好不要使用了。方法的優點:能夠上傳文件到裝有ftp服務器的任意一個可以訪問的遠程linux服務器,相對上面兩種方法,它是不錯的。呵呵
方法四:依舊使用struts2框架,工具類大變身,改用IBM提出,並由微軟重大改進后產出而出的SMB。它能被用於Warp連接和客戶端與服務器之間的信息溝通。服務器信息塊(SMB)協議是一種IBM協議,用於在計算機間共享文件、打印機、串口等。SMB 協議可以用在因特網的TCP/IP協議之上,也可以用在其它網絡協議如IPX和NetBEUI 之上。
不在介紹了,這些網上有,呵呵。
下面來說說這個類的威力,優點:能夠使用很簡單的代碼實現想連接的任意服務器共享文件,當然它有前提,連接的服務器有這個共享文件,且共享文件外界任意訪問(需要用戶名和密碼等等)。使用到的包為:jcifs-1.3.17.jar。可以實現文件讀取,文件修改,下載文件,上傳文件等等,在它的方法上,很多和file類很像,唯一的變化時在file相同功能方法的名字前面加上了smb字樣,這很好讓人理解。
上傳文件路徑:remoteUrl.add(“smb://用戶名:密碼@ip/要上傳到服務器的地址”);
文件刪除:new SmbNamedPipe(“smb://用戶名:密碼@服務器ip,SmbNamedPipe.PIPE_TYPE_RDWR).delete();
看文件是讀取:new SmbFile(“smb://用戶名:密碼@服務器ip/文件的位置);
