【问题标题】:Embedded FTPServer for UnitTest on Windows: FileUpload 551 errorWindows 上 UnitTest 的嵌入式 FTPServer:FileUpload 551 错误
【发布时间】:2014-11-23 12:32:24
【问题描述】:

我想在我的单元测试中嵌入一个简单的 FTPServer,以测试用于文件上传的 FTP 客户端功能。我尝试了 Apache FTPServer (ftpserver-core-1.0.6.jar)。

文件上传失败

551 /C:/<correctDestinationPath>/myFile.txt: Error on output file.

这是我设置服务器的代码:

    FtpServerFactory serverFactory = new FtpServerFactory();

    BaseUser user = new BaseUser();
    user.setName("anonymous");
    user.setPassword( System.getProperty( "user.name" ) + "@" + InetAddress.getLocalHost().getHostName() );
    user.setHomeDirectory( TEST_TARGET_DIR_LOCAL );
    List<Authority> authorities = new ArrayList<Authority>();
    authorities.add(new WritePermission());
    user.setAuthorities(authorities);
    UserManager userManager = serverFactory.getUserManager();
    userManager.save(user);

    myServer = serverFactory.createServer();
    myServer.start();

这非常适合连接和登录:

220 Service ready for new user.
USER *******
331 Guest login okay, send your complete e-mail address as password.
PASS *******
230 User logged in, proceed.
SYST
215 UNIX Type: Apache FtpServer
TYPE I
200 Command TYPE okay.

生产代码调用 FTPClient 如下:

myFtpClient.storeFile( "C:\<correctDestinationPath>\myFile.txt", anInputStream );

请注意,这是我的 Windows 机器上的正确路径。但是 FTPServer 将其打乱到类似 unix 的路径“/C:/correctDestinationPath/myFile.txt”。

如何配置也适用于 Windows 的 FTPServer?单元测试本身当然应该是操作系统中立的。

【问题讨论】:

    标签: java windows apache ftp-server unit-testing


    【解决方案1】:

    我自己找到了解决方案。两种可能:

    1. 将用户的主目录设置为绝对路径(例如“C:\”)并上传不带路径的文件(仅“myFtpClient.storeFile("myFile.txt", anInputStream);" - > 文件存储在 user.home

    2. 根本不设置主目录并使用完整路径上传文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2018-12-24
      • 2019-07-30
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多