FTPサーバーを操作するためにorg.apache.commons.net.ftpライブラリを使用しています。私は約5つのFTPサーバーを使用し、そのうちの1つが(私のために)適切に動作しません。ファイルをアップロードするには、方法ftpClient.setFileType(FTP.BINARY_FILE_TYPE)
も使用しますが、このサーバーではアップロードしたファイルのサイズがローカルのHDDと同じではありません。それは通常MP3ファイルであり、アップロードされたMP3を再生しようとすると、いくつかの話題があります。 私はFTPサーバーの設定が間違っていると思っていますが、このサーバーを担当する会社は変更を加えることはほとんどありません。 さらに重要な注意点:Total CommanderまたはWinSCPを使用してファイルをアップロードすると、アップロードされたファイルは同じサイズで正しいことになります。ここでApache Java FTPクライアントが一部のサーバーでバイナリ転送モードに切り替わりません
は私のコードです:
public class FtpConnection {
String FTP_SERVER;
String FTP_USER;
String FTP_PASSWORD;
int FTP_PORT;
FTPClient ftpClient;
int attempts = 3;
long FILE_SIZE;
public FtpConnection() {
FTP_SERVER = StradaAd.FTP_SERVER;
FTP_USER = StradaAd.FTP_USER;
FTP_PASSWORD = StradaAd.FTP_PASSWORD;
FTP_PORT = StradaAd.FTP_PORT;
ftpClient = new FTPClient();
ftpClient.setCopyStreamListener(streamListener);
ftpClient.setBufferSize(1024 * 1024 * 1024);
ftpClient.setConnectTimeout(240000);
ftpClient.setDataTimeout(240000);
try {
ftpClient.connect(FTP_SERVER, FTP_PORT);
ftpClient.setControlKeepAliveTimeout(300);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
StradaAd.errorArea.append("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftpClient.login(FTP_USER, FTP_PASSWORD);
if (!success) {
//unsuccess
}
} catch (IOException ex) {
//error
}
}
public boolean uploadFile(File source, String destination, String chain) {
try {
FILE_SIZE = source.length();
ftpClient.cwd("//" + chain + "/REKLAMY/");
for(int i=0;i<attempts;i++) {
ftpClient.storeFile(destination, new FileInputStream(source));
for(FTPFile f : ftpClient.listFiles()) {
if(f.getName().equals(destination) && f.getSize() == source.length())
return true;
}
}
return false;
} catch (IOException ex) {
Logger.getLogger(FtpConnection.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
}
}
このコードを変更したり、同じサイズ、アップロードされたファイルを持っているために、このFTPサーバーを設定する方法ソリューションを誰かを知っていますか? ご協力いただきありがとうございます。
ありがとう – mesnicka