java實現上傳文件到FTP
本文實例為大傢分享瞭java實現上傳文件到FTP的具體代碼,供大傢參考,具體內容如下
需求說明:將指定文件上傳到FTP,上傳成功後修改文件名。
獲取文件名及路徑(這裡是從數據庫獲取,所以前面的代碼就不CV瞭)
/** * 測試上傳 * @param map 從數據庫獲取到的文件信息 (包含文件路徑FILE_PATH 文件類型FILE_TYPE等信息) */ public void testUpdFtpFile(Map<String,Object> map){ /*上傳附件到FTP*/ FileInputStream inputStream = null; try { //找到要上傳的文件 String originfilename = "E:\\work\\files\\"+map.get("FILE_PATH").toString(); //轉成流 inputStream = new FileInputStream(originfilename); //上傳後的文件名+文件類型 String ftpName = "上傳到FTP後的文件名."+map.get("FILE_TYPE"); boolean updFtpFile = FtpClientFile.uploadFile(ftpName,inputStream); if(updFtpFile){ //打印下日志 System.out.println(("=======文件已上傳到FTP========")); } } catch (Exception e) { throw new BusinessException("附件上傳失敗!"); } }
FtpClientFile工具類方法
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; import com.google.gson.JsonArray; /** * ftp 上傳文件 * FTPClient commons.net 3.0.1版本 * @author Lenovo * */ public class FtpClientFile { private static final String hostname = "10.xx.xx.xx" ;//FTP IP private static final int port = 21;//FTP 端口號 private static final String username = "ftpName";//FTP 登錄賬號 private static final String password = "ftpPsd"; //FTP 登錄密碼 private static final String pathname = "/";//FTP 工作路徑 /** * 上傳文件(可供Action/Controller層使用) * @param fileName 上傳到FTP服務器後的文件名稱 * @param inputStream 輸入文件流 * @return */ public static boolean uploadFile(String fileName,FileInputStream inputStream){ boolean flag = false; FTPClient ftpClient = new FTPClient(); //設置超時 ftpClient.setConnectTimeout(60*60*1000); //設置編碼 ftpClient.setControlEncoding("UTF-8"); try { //連接FTP服務器 ftpClient.connect(hostname, port); //登錄FTP服務器 ftpClient.login(username, password); //是否成功登錄FTP服務器 int replyCode = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(replyCode)){ return flag; } System.out.println("===========登錄FTP成功瞭=========="); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); //切換路徑 創建路徑 ftpClient.makeDirectory(pathname); ftpClient.changeWorkingDirectory(pathname); ftpClient.enterLocalPassiveMode(); //設置緩沖 ftpClient.setBufferSize(1024 * 1024 * 20); //保持連接 ftpClient.setKeepAlive(true); boolean a = ftpClient.storeFile(new String(fileName.getBytes("utf-8"),"iso-8859-1"), inputStream); if(a){ System.out.println("===========創建文件成功=============="+a); String fileName2 = fileName+"AAA"; boolean status = ftpClient.rename(fileName, fileName2); if(status) System.out.println("===========修改文件名稱成功=============="+status); } inputStream.close(); ftpClient.logout(); flag = true; } catch (Exception e) { e.printStackTrace(); } finally{ if(ftpClient.isConnected()){ try { ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } return flag; } /* public static void main(String[] args) { String originfilename = "C:\\Users\\Lenovo\\Desktop\\xx.txt"; FileInputStream inputStream; try { inputStream = new FileInputStream(new File(originfilename)); boolean a = uploadFile("xx.txt","/104/",inputStream); System.out.println("上傳文件成功============"+a); } catch (FileNotFoundException e) { e.printStackTrace(); } }*/ }
上傳文件到FTP時 註意:是否有權限登錄服務器/上傳文件等操作。
默認在瀏覽器輸入自己的ftp地址訪問下看看 ftp://10.xx.xx.xx:端口號 登錄看看
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。