java實現檔案上傳下載至ftp伺服器
以前做的一個專案,用到了檔案上傳下載至ftp伺服器,現在對其進行一下複習,比較簡單,一下就能看明白。
環境:首先,先安裝ftp伺服器,我是在win8本地用IIS配置的, 百度一下就可以找到安裝文件。
1.在你的專案目錄下建立ftp配置檔案,目錄如下圖
01 ftpconfig.properties:
ftpIp=10.73.222.29
ftpPort=21
ftpUser=WP
ftpPwd=04143114wp
ftpRemotePath=d://share
02 讀取ftpconfig.properties中的具體內容的類:
package com.java.core.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author wangpei
* @version 建立時間:2017年5月6日 下午9:42:40 讀取ftp檔案的配置檔案
*/
public class ReadFtpProperties {
private InputStream is;
private Properties properties;
public ReadFtpProperties() {
is = this .getClass().getResourceAsStream("/ftpconfig.properties");// 將配置檔案讀入輸入流中
properties = new Properties();
try {
properties.load(is);
} catch (IOException e) {
System.out.println("配置檔案不存在..");
e.printStackTrace();
} finally {
if (null != is) {
try {
is.close();
} catch (IOException e) {
System.out.println("關閉流失敗..");
e.printStackTrace();
}
}
}
}
public String getIp() {// 獲取ftp伺服器的ip地址
return properties.getProperty("ftpIp");
}
public String getPort() {// 獲取ftp伺服器的埠
return properties.getProperty("ftpPort");
}
public String getUser() {// 獲取ftp登入使用者名稱
return properties.getProperty("ftpUser");
}
public String getPwd() {// 獲取ftp伺服器的登入密碼
return properties.getProperty("ftpPwd");
}
public String getRemotePath() {// 獲取ftp伺服器的存放檔案的目錄
return properties.getProperty("ftpRemotePath");
}
}
03 檔案上傳下載的介面類
package com.java.web.service;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
import com.java.core.util.ReadFtpProperties;
/**
* @author wangpei
* @version 建立時間:2017年5月6日 下午6:39:03
* 檔案上傳下載業務邏輯介面層
*/
public interface FtpService {
/*
* 登入至FTP
*/
public boolean loginFTP(FTPClient client, ReadFtpProperties rfp);
/*
* 退出ftp
*/
public boolean logout(FTPClient client);//
/*
* 上傳檔案到remotePath,其在ftp上的名字為inputStream
*/
public boolean uploadFile(FTPClient client, String remotePath,
String fileNewName, InputStream inputStream, ReadFtpProperties rfp);
/*
* 從目錄remotePath,下載檔案fileName
*/
public InputStream downFileByFtp(FTPClient client, String remotePath,
String fileName);
/*
* 刪除ftp上的目錄為pathName的檔案
*/
public boolean delFile(FTPClient client, String pathName);
}
04 檔案上傳下載的介面實現類
package com.java.web.service.serviceImpl;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import com.java.core.util.ReadFtpProperties;
import com.java.web.service.FtpService;
/**
* @author wangpei
* @version 建立時間:2017年5月6日 下午10:02:28 類說明
*/
public class FtpServiceImpl implements FtpService {
public boolean loginFTP(FTPClient client, ReadFtpProperties rfp) {
String ftpIp = rfp.getIp();
String ftpPort = rfp.getPort();
String ftpUser = rfp.getUser();
String ftpPwd = rfp.getPwd();
// String fgtpRemotePath = rfp.getRemotePath();
boolean b = false;
try {
client.connect(ftpIp, Integer.parseInt(ftpPort));
} catch (NumberFormatException e) {
System.out.println("無法連線到ftp");
return false;
} catch (SocketException e) {
System.out.println("無法連線到ftp");
return false;
} catch (IOException e) {
System.out.println("無法連線到ftp");
return false;
}
client.setControlEncoding("uft-8");
try {
b = client.login(ftpUser, ftpPwd);
} catch (IOException e) {
System.out.println("登入ftp出錯");
logout(client);// 退出/斷開FTP伺服器連結
return false;
}
return b;
}
public boolean logout(FTPClient client) {
boolean b = false;
try {
b = client.logout();// 退出登入
client.disconnect();// 斷開連線
} catch (IOException e) {
return false;
}
return b;
}
public boolean uploadFile(FTPClient client, String remotePath,
String fileNewName, InputStream inputStream, ReadFtpProperties rfp) {
boolean b = false;
try {
client.setFileType(FTPClient.BINARY_FILE_TYPE);
client.enterLocalPassiveMode();
if (remotePath != null && !"".equals(remotePath.trim())) {
String[] pathes = remotePath.split("/");
for (String onepath : pathes) {
if (onepath == null || "".equals(onepath.trim())) {
continue;
}
onepath = new String(onepath.getBytes("utf-8"),
"iso-8859-1");
System.out.println("onepath=" + onepath);
if (!client.changeWorkingDirectory(onepath)) {
client.makeDirectory(onepath);// 建立FTP伺服器目錄
client.changeWorkingDirectory(onepath);// 改變FTP伺服器目錄
} else {
System.out.println("檔案單路徑");
}
}
}
b = client.storeFile(new String(fileNewName.getBytes("utf-8"),
"iso-8859-1"), inputStream);
} catch (UnsupportedEncodingException e) {
return false;
} catch (IOException e) {
return false;
}
return b;
}
public InputStream downFileByFtp(FTPClient ftpClient, String remotePath,
String fileName) {
FTPFile[] fs;
InputStream is = null;
try {
// 設定被動模式
ftpClient.enterLocalPassiveMode();
// 設定以二進位制流的方式傳輸
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// 設定編輯格式
ftpClient.setControlEncoding("utf-8");
remotePath = remotePath.substring(0,
remotePath.lastIndexOf(fileName));
fs = ftpClient.listFiles(remotePath);// 遞迴目標目錄
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {// 查詢目標檔案
is = ftpClient.retrieveFileStream(new String(
(remotePath + fileName).getBytes("utf-8"),
"iso-8859-1"));
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return is;
}
public boolean delFile(FTPClient ftpClient, String pathName) {
boolean b = false;
try {
b = ftpClient.deleteFile(pathName);
return b;
} catch (Exception e) {
return false;
} finally {
logout(ftpClient);// 退出/斷開FTP伺服器連結
}
}
}
程式碼很好理解,看一遍應該就可以理解,在這兒就不具體分析了,主要看程式碼中的註釋。
相關推薦
java實現檔案上傳下載至ftp伺服器
以前做的一個專案,用到了檔案上傳下載至ftp伺服器,現在對其進行一下複習,比較簡單,一下就能看明白。 環境:首先,先安裝ftp伺服器,我是在win8本地用IIS配置的, 百度一下就可以找到安裝文件。 1.在你的專案目錄下建立ftp配置檔案,目錄如下圖
java實現檔案上傳下載的三種方法
JSP+Servlet 一、檔案上傳下載原理 在TCP/IP中,最早出現的檔案上傳機制是FTP。它是將檔案由客戶端傳送到伺服器的標準機制。但是在jsp程式設計中不能使用FTP方法來上傳檔案,這是由jsp的執行機制所決定的。 通過為表單元素設定Method=“post” en
Java實現檔案上傳和下載
上面的博文我寫了Java對檔案操作的功能https://blog.csdn.net/qq_24380635/article/details/83273359,這次記錄一下檔案上傳和下載的功能。看看兩者有什麼不同,就可以知道檔案操作和檔案上傳下載有什麼不同了。我也是一點點懂,也
Java中實現檔案上傳下載的三種解決方案
第一點:Java程式碼實現檔案上傳 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null; String fileAddre="/numU
java web 一行程式碼實現檔案上傳下載
每當要實現檔案上傳下載的功能時,都要複製貼上拼湊程式碼。如果用了不同的框架,程式碼還不一樣,配置啥的一堆,甚是繁瑣,不喜歡。科學家們喜歡把紛繁複雜的自然現象總結為一個個簡潔的公式,我們也來試試,把上傳下載整成一行程式碼~ 花了一天時間,整了個通用
Java 使用 SFTP 實現檔案上傳下載(二)
package com.lijy.util; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraf
java實現檔案上傳ftp伺服器功能
java檔案上傳至ftp伺服器 廢話不多說,直接上程式碼,這裡提供兩種方法,此程式執行需要下載apache-commons-net.jar包,可以使用maven倉庫下載,也可以使用http://www.java2s.com/搜尋下載。 第一種方法:使用下
java實現檔案上傳與下載
東風化宇,檔案上傳 一、對於檔案上傳,瀏覽器在上傳的過程中是將檔案以流的形式提交到伺服器端的,Servlet獲取上傳檔案的輸入流然後再解析裡面的請求引數是比較麻煩。 JSP程式碼,POST請求,表單必須設定為enctype="multipar
HTTP POST請求報文格式分析與Java實現檔案上傳
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Struts2 實現檔案上傳下載
檔案上傳對Struts2來說是一件非常容易的事情。Struts2檔案上傳依賴如下jar包 commons-fileupload-x.x.x.jar commons-io-x.x.x.jar 檔案上傳大致步驟: 編寫頁面 配置struts.xml 攔截器會自動接收上傳的檔
java實現檔案上傳_後端
maven: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <ver
JspSmartUpload 實現檔案上傳下載及Mysql實現分頁
一、寫在前面 這篇文章主要是分享使用JspSamrtUpload實現多檔案的上傳下載功能,及使用Mysql資料庫的 limit 函式實現檔案顯示列表的分頁顯示功能。 二、需要的jar包 下載後把它複製到web的lib目錄下即可。 三、關鍵程式碼 3.1 多檔案上傳前
MAC實用SSH連線遠端伺服器,並實現檔案上傳下載
MAC作為程式設計師的神器,在程式設計上的使用遠超window的電腦,而MAC本身提供了SSH功能,配合VIM編輯器對程式設計十分有幫助。 使用ssh連線遠端主機 sudo -i 切換root許可權 ssh [email protected] 其中,
React中使用fetch實現檔案上傳下載
在最近的專案中需要實現檔案上傳下載功能,在以前spring、jsp的專案中實現檔案上傳很簡單,但現在前後端分離,前端使用React,後端使用Spring Boot,實現就沒那麼方便了。 前端React使用fetch而非傳統的XMLHttpRequest從後端獲取
SpringMVC——實現檔案上傳下載
一、檔案上傳 1.引入依賴包 在pom.xml檔案中新增如下內容,引入 commons-fileupload 和 commons-io 兩個包。 <dependency> <groupId>commons-f
Flask 實現檔案上傳下載功能
檔案下載的兩種方法, 一是構建檔案url,二是使用flask.send_from_directory(directory, filename, **options),介紹第一種方法,是我寫著寫著就發現的,第二種方法就查api吧,不介紹了。 檔案下載一般都是先有一
Jsp+Servlet實現檔案上傳下載——前臺頁面開發
JSP和Servlet都是J2EE的規範,JSP全名為Java Server Pages,中文名叫java伺服器頁面,它是在傳統的網頁HTML檔案中插入Java程式段(Scriptlet
spring boot實現檔案上傳下載以及多檔案上傳
首先是很簡單的介面,在resource/static下建立檔案file.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymel
完整實現檔案上傳下載以及輸出下載列表
首先匯入jar包: commons-fileupload-1.2.1.jar 【檔案上傳元件核心jar包】 commons-io-1.4.jar 【封裝了對檔案處理的相關工具類】 jsp程式碼: 功能選擇: &
FastDFS實現檔案上傳下載實戰
正好,淘淘商城講這一塊的時候,我又想起來當時老徐讓我寫過一個關於實現FastDFS實現檔案上傳下載的使用文件,當時結合我們的ITOO的視訊系統和畢業論文系統,整理了一下,有根據網上查到的知識,總結了一點東西,下面分享一下 一、FastDFS簡介: