1. 程式人生 > >採用FTP協議實現檔案的上傳

採用FTP協議實現檔案的上傳

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                 請先明白一點,HTTP上傳和FTP上傳是不一樣的,HTTP上傳會帶有標頭檔案等等,你得分析,也就是通過網頁上傳。通過FTP上傳不用,因為他不會帶標頭檔案,操作方式其實就和你在本地操作一個檔案複製到另外一個地方沒有什麼區別,只是使用的類不一樣而已。
下面是具體實現的原檔案:
 import java.io.File;import java.io.FileInputStream;import sun.net.TelnetOutputStream;import sun.net.ftp.FtpClient;
/***採用FTP協議實現多個檔案的上傳*FTP協議是Internet上用來傳送檔案的協議,規定了Internet上檔案互相傳送的標準。在java中實*現這一功能是藉助FtpClient類完成的。具體實現過程:首先與FTP伺服器建立連線;初始化檔案的*傳輸方式,包括ASCIIBINARY兩種方式;將檔案輸出到檔案輸入流FileInputStream中;*FileInputStream中的資料讀入位元組陣列中;位元組陣列中的資料寫入輸出流*TelnetOutputStream(利用write方法將資料寫入到一個網路連結上)。這樣和原始檔同名的一個*檔案就複製到了伺服器端。本例的JavaBean中通過
upload()方法完成檔案上傳過程。*/publicclass WriteFileToServer {public WriteFileToServer() {    }publicstaticvoid main(String[] args) {        WriteFileToServer writeFileToServer = new WriteFileToServer();        writeFileToServer.upload("C://eclipse.exe ");    }publicstaticvoid upload(String localFileAndPath) {        FtpClient ftpClient;
try {            ftpClient=new FtpClient("192.168.1.106",21);            ftpClient.login("Anonymous","[email protected]");/*********必須要有下面這一句,否則寫入的大小與讀入的大小不一致************/            ftpClient.binary();/************************取得本地檔案的屬性**************************/            File f=new File(localFileAndPath);            System.out.println("本地檔案大小:"+f.length());            System.out.println("檔名:"+f.getName());            FileInputStream fis=new FileInputStream(new File(localFileAndPath));//put方法的引數表示在FTP伺服器上要生成的檔名            TelnetOutputStream tos=ftpClient.put(f.getName());byte[] bt=newbyte[1024];int len=0;int lenTotal=0;//採用迴圈的方式將從檔案讀入的流寫到FTP伺服器上while((len=fis.read(bt))!=-1) {                lenTotal+=len;                tos.write(bt,0,len);            }//System.out.println("寫到伺服器的大小:"+lenTotal);            tos.close();            fis.close();            ftpClient.closeServer();        } catch (Exception e) {            e.printStackTrace();        }    }}            這裡寫圖片描述