将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
生活随笔
收集整理的這篇文章主要介紹了
将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
將文件上傳至ftp服務(wù)器,傳入File對象,將文件上傳至ftp服務(wù)器
需要配置修改的點(diǎn):
1. 服務(wù)器ip端口(服務(wù)器ip 端口22/21)。
2. 服務(wù)器賬號密碼(服務(wù)器登錄用戶名密碼)。
3. 上傳路徑(寫入的路徑會去檢查是否存在,若存在則在路徑下繼續(xù)深入,不存在則創(chuàng)建)。
4. 下面的注釋很全面很清楚,如遇問題,可留言。
@Slf4j
@Component
public class FtpUtils {/*** @param 文件* @return*/public String ftpUpload(File file){FTPClient ftp = new FTPClient();String uploadPath ="";//文件上傳的路徑String state = "";//文件上傳狀態(tài)try {//配置表中取出ftp服務(wù)器所在的ip和服務(wù)的端口String ip = "192.168.11.111";//ftp服務(wù)器的ipint port = 21;//ftp服務(wù)器的端口/*** 這里修改存放路徑*/uploadPath ="aaa/bbb/ccc/";//文件存放的路徑名ftp.connect(ip, port);//連接ftp服務(wù)器ftp.login("userName", "passWord");//登錄
// ftp.connect("432.8.129.66",21);
// ftp.login("ubuntu","root");//檢驗(yàn)是否連接成功int reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {log.info("連接失敗");return "99999";}uploadPath = uploadPath;//更改文件保存的目錄
// ftp.changeWorkingDirectory("/");//判斷文件夾 創(chuàng)建文件夾this.createDir(uploadPath,ftp);// ftp.makeDirectory(uploadPath);log.info("文件上傳的路徑:ftp服務(wù)器根目錄"+uploadPath+file.getName());FileInputStream is = new FileInputStream(file);//以第一個參數(shù)作為文件名,ftp.enterLocalPassiveMode();ftp.setControlEncoding("UTF-8");if(ftp.storeFile(new String(file.getName().getBytes("UTF-8")), is)){log.info("上傳成功");state = "0000";}else{log.info("上傳失敗");state = "9999";}ftp.logout();is.close();} catch (SocketException e) {// connec報(bào)的e.printStackTrace();log.info("服務(wù)器連接異常!!");}catch (IOException e) {// connec報(bào)的連接異常e.printStackTrace();log.info("文件服務(wù)器連接異常!!");}finally{//關(guān)閉ftp連接if(ftp.isConnected()){try {ftp.disconnect();} catch (IOException e) {e.printStackTrace();}}}//返回上傳狀態(tài)return state;}public void createDir(String remote,FTPClient ftpClient)throws UnsupportedEncodingException,IOException{//將傳進(jìn)來的remote前面的目錄路徑拿出來String directory = remote.substring(0, remote.lastIndexOf("/") + 1);if (!directory.equalsIgnoreCase("/") && !ftpClient.changeWorkingDirectory(new String(directory.getBytes("GBK"), "iso-8859-1"))) {// 如果遠(yuǎn)程目錄不存在,則遞歸創(chuàng)建遠(yuǎn)程服務(wù)器目錄int start = 0;int end = 0;//地址開頭為/ start=1if (directory.startsWith("/")) {start = 1;} else {start = 0;}end = directory.indexOf("/", start);while (true) {String subDirectory = new String(remote.substring(start, end).getBytes("GBK"),"iso-8859-1");if (!ftpClient.changeWorkingDirectory(subDirectory)) {if (ftpClient.makeDirectory(subDirectory)) {ftpClient.changeWorkingDirectory(subDirectory);} else {System.out.println("創(chuàng)建目錄失敗");}}start = end + 1;end = directory.indexOf("/", start);// 檢查所有目錄是否創(chuàng)建完畢if (end <= start) {break;}}}}}
總結(jié)
以上是生活随笔為你收集整理的将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: typora新增主题,typora将主题
- 下一篇: 苹果设备iphone,ipad,macb