Java實現(xiàn)FTP上傳到服務器
簡介
FTP是TCP/IP協(xié)議組中的協(xié)議之一,包括兩個組成部分,一是FTP服務端,二是FTP客戶端,其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協(xié)議訪問位于FTP服務器上的資源。
實例
下面利用Java實現(xiàn)FTP上傳圖片到遠程服務器實例:
1、依賴jar包
<dependency> ? ? ? <groupId>commons-fileupload</groupId> ? ? ? <artifactId>commons-fileupload</artifactId> ? ? ? <version>1.4</version> </dependency> <dependency> ? ? ? <groupId>commons-io</groupId> ? ? ? ?<artifactId>commons-io</artifactId> ? ? ? ?<version>2.6</version> </dependency> <dependency> ? ? ? ?<groupId>commons-net</groupId> ? ? ? ?<artifactId>commons-net</artifactId> ? ? ? ?<version>3.6</version> </dependency>
2、FtpUtil用來封裝上傳文件的工具類
public class FtpUtil { ? ? public static void UploadImageByInputStream(InputStream is,String imageName) throws IOException { ? ? ? ? //創(chuàng)建ftp客戶端 ? ? ? ? FTPClient ftpClient = new FTPClient(); ? ? ? ? ftpClient.setControlEncoding("GBK"); ? ? ? ? String hostname = "127.0.0.1";//服務器地址 ? ? ? ? int port = 21;//ftp端口 ? ? ? ? String username = "vftp";//ftp用戶名 ? ? ? ? String password = "****";//密碼 ? ? ? ? //連接ftp服務器 ? ? ? ? ftpClient.connect(hostname, port); ? ? ? ? //登陸ftp ? ? ? ? ftpClient.login(username, password); ? ? ? ? int reply = ftpClient.getReplyCode(); ? ? ? ? System.out.println(reply); ? ? ? ? //如果reply返回230就算成功了,如果返回530密碼用戶名錯誤或當前用戶無權(quán)限 ? ? ? ? if (!FTPReply.isPositiveCompletion(reply)) { ? ? ? ? ? ? ftpClient.disconnect(); ? ? ? ? ? ? return; ? ? ? ? } ? ? ? ? //設置文件類型(二進制) ? ? ? ? ftpClient.setFileType(FTP.BINARY_FILE_TYPE); ? ? ? ? //設置被動模式 ? ? ? ? ftpClient.enterLocalPassiveMode(); // ? ? ?ftpClient.makeDirectory("images");//在root目錄下創(chuàng)建文件夾 // ? ? ? ?String remoteFileName = System.currentTimeMillis()+"_"+imageName; // ? ? ? ?ftpClient.storeFile("/www/wwwroot/vftp/"+imageName, is);//文件你若是不指定就會上傳到root目錄下 ? ? ? ? ftpClient.storeFile(imageName, is);//文件你若是不指定就會上傳到root目錄下 ? ? ? ? is.close(); ? ? ? ? ftpClient.logout(); ? ? ? ? ftpClient.disconnect(); ? ? } }
3、控制器
@RestController public class FileUploadController { ? ? @RequestMapping("/upload") ? ? public String upload(@RequestParam("file") MultipartFile file) { ? ? ? ? if (!file.isEmpty()){ ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? InputStream inputStream = file.getInputStream(); ? ? ? ? ? ? ? ?? ?FtpUtil.UploadImageByInputStream(inputStream,file.getOriginalFilename()); ? ? ? ? ? ? } catch (IOException e) { ? ? ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? ? ? ? ? return "fail"; ? ? ? ? ? ? } ? ? ? ? ? ? return "success"; ? ? ? ? }else { ? ? ? ? ? ? return "fail"; ? ? ? ? } ? ? } }
4、前端頁面
<body> ? ? <form action="/upload" method="post" enctype="multipart/form-data"> ? ? ? ? 選擇文件:<input type="file" name="file"><br> ? ? ? ? <input type="submit" value="上傳"> ? ? </form> </body>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Springboot如何通過yml配置文件為靜態(tài)成員變量賦值
這篇文章主要介紹了Springboot如何通過yml配置文件為靜態(tài)成員變量賦值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10Mybatis查找返回Map,List集合類型的數(shù)據(jù)方式
這篇文章主要介紹了Mybatis查找返回Map,List集合類型的數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07淺談java Iterator.remove()方法的用法(詳解)
下面小編就為大家?guī)硪黄獪\談java Iterator.remove()方法的用法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01SpringCloud實戰(zhàn)小貼士之Zuul的路徑匹配
這篇文章主要介紹了SpringCloud實戰(zhàn)小貼士之Zuul的路徑匹配,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10MyBatisPlus唯一索引批量新增或修改的實現(xiàn)方法
本文主要介紹了MyBatisPlus唯一索引批量新增或修改的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03Java實現(xiàn)復雜的進制轉(zhuǎn)換器功能示例
這篇文章主要介紹了Java實現(xiàn)復雜的進制轉(zhuǎn)換器功能,結(jié)合實例形式分析了java數(shù)學運算的相關實現(xiàn)技巧,需要的朋友可以參考下2017-01-01