apacheftpclient連接池
『壹』 apache ftpserver1.0.6設置最大連接數和最大登錄數問題
listenerFactory.setPort(Integer.parseInt(ftpport));
ftpServerFactory.addListener("default", listenerFactory
.createListener());
ConnectionConfigFactory connectionConfigFactory = new ConnectionConfigFactory();
connectionConfigFactory.setMaxLogins(30);
ConnectionConfig connectionConfig = connectionConfigFactory.createConnectionConfig();
ftpServerFactory.setConnectionConfig(connectionConfig);
調用createConnectionConfig方法就可以了
『貳』 FTPClient上傳文件,文件在ftp伺服器創建了,但是文件為空
對這個庫不熟悉,你可以看看filename中是不是包含全路徑,不然的話你可能上傳時無法讀取到文件的內容。只是建議,你調試一下看看。
『叄』 java中在linux環境下,運用org.apache.commons.net.ftp.FTPClient包,下載FTP服務上的文件,報出異常:
1,確保手工用FTP客戶端連接沒問題。
2,手工沒問題,程序也應該沒問題才是。
3,確保程序中安全CLOSE連接,FTP伺服器也是有連接限制的。
4,適當考慮重起一下FTP伺服器。
『肆』 apache commnet ftp的ftpclient類的setsotimeout和setdatatimeout有什麼區別
1. org.apache.commons.net.ftp.FTPClient.setDataTimeout(int)
Sets the timeout in milliseconds to use when reading from the data connection.
設置讀取數據傳輸超時時間
『伍』 ftp伺服器可以像資料庫一樣提供連接池嗎
因為我是調用後台的WebService進行ftp文件的讀取,WebService伺服器並不一定和ftp伺服器是同一台機子,在WebService內封裝了對ftp的連接、發送命令、接受數據的,客戶端用IE進行操作,所以實際上是WebService不斷的和ftp連接,就是想在WebService端能不能作類似於連接池的東西
『陸』 使用org.apache.commons.net.ftp.FTPClient上傳下載的問題
請檢查你的FTP客戶端的埠參數是否正確。還有要檢查你的殺毒軟體及防火牆是否攔截了上傳,請將FTP軟體加入信任名單。希望能幫到你,呵呵~
『柒』 apache的ftpClient的setConnectTimeout方法怎麼用
apache的ftpClient的setConnectTimeout方法怎麼用
用下面的方法來修改:
首先在運行中輸入:ftp ,確定後,就進入了命令提示符下的用戶登錄狀態,然後提示輸入用戶名與密碼,正確輸入後,就進入了ftp命令方式,在提示符下輸入下列的命令,就可以修改密碼,
ftp>quote site pswd 回車確認,就會出現密碼修改成功的提示,再用bye命令返回就行了
『捌』 FtpClient
當時我用SUN 的FtpClient.get()方法下載文件是有問題的,我推薦你用org.apache.commons.net.ftp.FTPClient下載文件,可以解決中文文件下載問題,你可以去我博客里看看哦:http://hi..com/renliangli/blog/item/6ccb6b3a049d95c9d46225a5.html,文章摘給你吧:
現在就來看下我解決的代碼吧,希望對遇到同樣問題的人有點幫助。
1)把ftp地址中的文件保存到本地的java類源碼:
package test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class Ftp {
/**
* Description: 從FTP伺服器下載文件
* @param ip FTP伺服器的ip地址
* @param port FTP伺服器埠,默認為:21
* @param username FTP登錄賬號
* @param password FTP登錄密碼
* @param remotePath FTP伺服器上的相對路徑
* @param fileName 要下載的文件名
* @param localPath 下載後保存到本地的路徑
* @return
*/
public static boolean downFile(String ip, int port,String username, String password, String remotePath,String fileName,String localPath) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(ip, port);
//下面三行代碼必須要,而且不能改變編碼格式,否則不能正確下載中文文件
ftp.setControlEncoding("GBK");
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh");
//如果採用默認埠,可以使用ftp.connect(url)的方式直接連接FTP伺服器
ftp.login(username, password);//登錄
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.changeWorkingDirectory(remotePath);//轉移到FTP伺服器目錄
FTPFile[] fs = ftp.listFiles();
for(int i = 0; i < fs.length; i++){
FTPFile ff = fs[i];
if(ff.getName().equals(fileName)){
File localFile = new File(localPath+File.separator+ff.getName());
//
OutputStream is = new FileOutputStream(localFile);
//注意此處retrieveFile的第一個參數由GBK轉為ISO-8859-1編碼。否則下載後的文件內容為空。
//原因可能是由於aix系統默認的編碼為ISO-8859-1
ftp.retrieveFile(new String(ff.getName().getBytes("GBK"),"ISO-8859-1"), is);
is.close();
}
}
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Ftp.downFile("10.32.166.144", 21, "test", "test", "/flashfxp", "激活碼.txt", "C:");
}
}
2)將ftp資源以文件流的方式打開,由用戶決定保存在本地何處,程序運行後可以從IE跳出框中打開或者保存的Action代碼,利用Struts1寫的:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.mocha.test;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class DownloadAction extends Action{
/** *//**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
* @throws IOException
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException{
OutputStream os=null;
try {
os = response.getOutputStream();
response.reset();
downFile("10.32.166.144", 21, "test", "test", "/flashfxp", "激活碼.txt",os,response);
} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try{
os.close();
} catch (IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
/**
* Description: 從FTP伺服器下載文件
* @param ip FTP伺服器ip地址
* @param port FTP伺服器埠,默認為21
* @param username FTP登錄賬號
* @param password FTP登錄密碼
* @param remotePath 附件在FTP伺服器上的絕對路徑
* @param fileName 要下載的文件名
* @param outputStream 輸出流
* @param response
* @return
*/
public static boolean downFile(String ip, int port,String username, String password, String remotePath
,String fileName,OutputStream outputStream,HttpServletResponse response) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(ip, port);
//下面三行代碼必須要,而且不能改變編碼格式
ftp.setControlEncoding("GBK");
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT);
conf.setServerLanguageCode("zh");
//如果採用默認埠,可以使用ftp.connect(url)的方式直接連接FTP伺服器
ftp.login(username, password);//登錄
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.changeWorkingDirectory(remotePath);//轉移到FTP伺服器目錄
FTPFile[] fs = ftp.listFiles();
for(int i = 0; i < fs.length; i++){
FTPFile ff = fs[i];
if(ff.getName().equals(fileName)){
String filename = fileName;
//這個就就是彈出下載對話框的關鍵代碼
response.setHeader("Content-disposition",
"attachment;filename=" +
URLEncoder.encode(filename, "utf-8"));
//將文件保存到輸出流outputStream中
ftp.retrieveFile(new String(ff.getName().getBytes("GBK"),"ISO-8859-1"), outputStream);
outputStream.flush();
outputStream.close();
}
}
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
}
差點忘了利用ftpclient要用到的jar包了,呵呵,就這兩個了:commons-net-1.4.1.jar、jakarta-oro-2.0.8.jar
對了我用的jdk是1.4的。所以commons-net-1.4.1.jar用了這個版本比較老的。