Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java apache FTP服务器和common.net FTP客户端_Java_Jboss_Ftp_Apache Commons - Fatal编程技术网

Java apache FTP服务器和common.net FTP客户端

Java apache FTP服务器和common.net FTP客户端,java,jboss,ftp,apache-commons,Java,Jboss,Ftp,Apache Commons,我正在尝试在java FTP服务器上上载文件 文件传输正常,但所有上传的文件都有额外的6ko数据 我使用嵌入式方法在应用程序所需的EJB服务bean中启动FTPServer 以下是我使用的代码: package com.cs3Drender.ftpservice; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.ejb.Local; import org.apache.

我正在尝试在java FTP服务器上上载文件

文件传输正常,但所有上传的文件都有额外的6ko数据

我使用嵌入式方法在应用程序所需的EJB服务bean中启动FTPServer

以下是我使用的代码:

package com.cs3Drender.ftpservice;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.Local;

import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.UserManager;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor;
import org.apache.ftpserver.usermanager.impl.BaseUser;
import org.apache.ftpserver.usermanager.impl.WritePermission;
import org.jboss.ejb3.annotation.Service;

/**
 * Session Bean implementation class FtpServerServiceLocal
 */
@Service
@Local(FtpServerServiceLocal.class)
public class FtpServerService implements FtpServerServiceLocal 
{   
private FtpServer server = null;

@Override
public void create() throws Exception 
{
    FtpServerFactory serverFactory = new FtpServerFactory();        
    ListenerFactory factory = new ListenerFactory();

    // set the port of the listener
    factory.setPort(2221);


    // replace the default listener
    serverFactory.addListener("default", factory.createListener());

    // create new user
    serverFactory.setUserManager(addUser("jboss", "azerty", "c:/tools"));

    // start the server
    server = serverFactory.createServer();
}

@Override
public void start() throws Exception 
{
    try {
        server.start();
    } catch (FtpException e) {
        e.printStackTrace();
    }
}

public void restart() throws Exception
{
    try {
        server.stop();
        server.start();
    } catch (FtpException e) {
        e.printStackTrace();
    }
}

@Override
public void stop() 
{
    try {
        server.stop();
    } catch (Exception e) {
        e.printStackTrace();
    }       
}

@Override
public void destroy() {
    stop();
    server = null;      
}

public UserManager addUser(final String username, final String password, final String ftproot)
{
    PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
    userManagerFactory.setFile(new File("c:/jbossusers.properties"));
    userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor());
    UserManager um = userManagerFactory.createUserManager();

    BaseUser user = new BaseUser();
    user.setName(username);
    user.setPassword(password);
    user.setHomeDirectory(ftproot);

    List<Authority> authorities = new ArrayList<Authority>();
        authorities.add(new WritePermission());        
    user.setAuthorities(authorities);

    try {
        um.save(user);
    } catch (FtpException e) {
        e.printStackTrace();
    }
    return um;
}
}
我真的不明白为什么transfert数据大小是错误的

服务器的跟踪日志也不包含错误

11:52:28548信息[org.apache.ftpserver.listener.nio.ftplogingfilter]已创建 11:52:28549信息[org.apache.ftpserver.listener.nio.ftplogingfilter]已打开 11:52:28550信息[org.apache.ftpserver.listener.nio.ftplogingfilter]已发送:220服务已为新用户做好准备

11:52:28552信息[org.apache.ftpserver.listener.nio.ftplogingfilter]已收到:用户jboss 11:52:28553信息[org.apache.ftpserver.listener.nio.ftplogingfilter]发送:331用户名好的,需要jboss的密码

11:52:28553信息[org.apache.ftpserver.listener.nio.ftplogingfilter]已接收:通过* 11:52:28561信息[org.apache.ftpserver.command.impl.PASS]登录成功-jboss 11:52:28561信息[org.apache.ftpserver.listener.nio.FtpLoggingFilter]已发送:230用户已登录,继续

11:52:28562信息[org.apache.ftpserver.listener.nio.ftplogingfilter]接收:端口127,0,0,1,12190 11:52:28563信息[org.apache.ftpserver.listener.nio.ftplogingfilter]已发送:200命令端口正常

11:52:28563信息[org.apache.ftpserver.listener.nio.ftplogingfilter]已收到:STOR bug sheep 2.png 11:52:28705信息[org.apache.ftpserver.command.impl.STOR]文件上传/bug sheep 2.png 11:52:28706信息[org.apache.ftpserver.listener.nio.ftplogingfilter]发送:150文件状态正常;即将打开数据连接

11:52:28706信息[org.apache.ftpserver.listener.nio.ftplogingfilter]发送:226传输完成


谢谢你的帮助

我找到了解决办法。我必须手动将传输类型设置为二进制模式

ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setFileType(FTP.BINARY_FILE_TYPE);