用apache commons-net FTPClient传输原始二进制?
更新:已解决 我正在调用FTPClient.setFileType() 我登录之前,导致FTP服务器使用默认模式(ASCII),无论我将其设置为什么.另一方面,客户的行为似乎已经正确设置了. BINARY模式现在正按照期望的方式完全工作,在所有情况下都可以运输文件字节字节.我要做的就是在Wireshark中遇到一点流量,然后使用NetCat模仿FTP命令,以查看发生了什么.我为什么两天前都没有想到?谢谢,大家的帮助! 我有一个XML文件,UTF-16编码,我使用Apache的Commons-Net-2.0 Java Library的FTPClient从FTP站点下载它.它提供了两种传输模式的支持:ASCII_FILE_TYPE和BINARY_FILE_TYPE,区别在于ASCII将用适当的本地行分隔符替换线分隔符('\r\n'或仅'\n' - 在hex,0x0d0a中或只是0x0a).我的问题是:我有一个测试文件,UTF-16编码,其中包含以下内容:
24 2024-03-30
编程技术问答社区
如何在apache-commons net中用生成的证书配置客户认证?
首先,我知道有一个类似的问题在这里,但它没有回答我的疑问. 我有一个配置了SSL的FTPS服务器(VSFTPD). 我已经生成了适当的密钥: openssl req -x509 -nodes -days 1825 -newkey rsa:2048 \ -keyout private/vsftpd.key \ -out certs/vsftpd.crt 并在服务器中配置了相应的conf文件. 现在,在带有Apache Commons Net的Java客户端代码中,我能够通过SSL与服务器进行交流: import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTP; impor
10 2024-03-20
编程技术问答社区
如何用apache.commons.net.ftps配置客户端认证?
我使用 apache.commons.net -framework在Java中实现了Java中的FTPS客户端(FTP). 它被配置为在默认端口21上进行明确的安全性. ftpsClient = new FTPSClient(false); ftpsClient.setTrustManager(getConfiguration().getCertificatesManager()); ftpsClient.connect(getConfiguration().getHostName(), getConfiguration().getPort()); 只要我不在服务器上执行客户端授权,一切正常. 但是我需要启用客户端认证,因此我在服务器上执行并配置了客户端系统属性: -Djavax.net.ssl.keyStore="D:/.../ftps-client-auth.keystore" -Djavax.net.ssl.keyStorePassword="*****" -Dja
6 2024-03-19
编程技术问答社区
在Java中确定另一个国家的互联网时间
我正在开发一个Java应用程序,该应用程序将由世界各地的人们使用.一项功能要求它显示在澳大利亚墨尔本的当前时间. 我找到了 this 回答并调整代码如下,但它返回了我当前的时间(如预期).它使用 try { String TIME_SERVER = "time-a.nist.gov"; NTPUDPClient timeClient = new NTPUDPClient(); InetAddress inetAddress = InetAddress.getByName(TIME_SERVER); TimeInfo timeInfo = timeClient.getTime(inetAddress); long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime(); return new Date(returnTime); } catch (Exception e) { System.out.prin
6 2024-02-28
编程技术问答社区
从安卓手机上传文件到FTP服务器?
以下是应该创建文本文档并将其上传到我的FTP服务器的代码.由于某种原因,它似乎不起作用.我曾经在 上提供的库 http:http://lavalatwork.blogspot. TW/2010/09/使用-Apache-Commons-ftp-library-in.html 用于与FTP服务器进行通信. try { final String testString = new String("Hello"); FileOutputStream fOut = openFileOutput("samplefile.txt", MODE_WORLD_READABLE); OutputStreamWriter osw = new OutputStreamWriter(fOut); osw.write(testString); osw.flush();
8 2024-02-28
编程技术问答社区
如何用Camel FTP处理 "主机尝试数据连接x.x.x.x与服务器y.y.y.y不一致 "错误?
我试图将文件发送到第三方FTP服务器(由亚马逊托管)与骆驼FTP生产商一起发送,并且有一个问题,我遇到了我以前从未见过的Writing File failed with: File operation failed... Host attempting data connection x.x.x.x is not the same as server y.y.y.y . 生产者被配置为被动模式,根据跟踪级别的日志,这将启用. (尽管错误消息听起来与活动模式问题更多有关) y.y.y.y IP地址是NSlookUp列出的目标域之一,因此位是有道理的.但是,x.x.x.x IP与其他Amazon托管服务器有关,因此我认为已经执行了某种交接或负载平衡,而FTP客户端不喜欢. 是否有某种方法可以配置骆驼FTP来允许此允许(我认为这是一个安全功能),或者应该被动模式允许此操作? 我对FTP服务器提供商没有影响,所以不幸的是,除了我的客户端选项之外,我什么也不能更改.
44 2024-02-28
编程技术问答社区
当使用Java Apache FTPClient进行FTP TLS时得到 "远程主机在握手过程中关闭连接"
我在Windows 10 64X上运行了Java(1.8)程序,用于FTP TLS(org.apache.commons.net.ftp): FTPSClient ftpClient = new FTPSClient(); System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2"); // LISTENER ftpClient.addProtocolCommandListener( new PrintCommandListener(new PrintWriter(System.out), true)); ftpClient.connect(server); ftpClient.login(user, pass); // Enter local passive mode ftpClient.enterLocalPassiveMode(); // useEpsvWithIPv4 ftpClient.setU
28 2024-02-27
编程技术问答社区
通过Maven中的Ant FTP任务上传文件
我正在尝试使用蚂蚁任务上传文件.如果我直接使用ant上传文件,但是如果我通过maven调用蚂蚁任务(使用maven-antrun-plugin),我会收到以下错误: 发生了一个蚂蚁构建感受:执行此行时发生以下错误: /home/me/proj/build.xml:15: Problem: failed to create task or type ftp Cause: the class org.apache.tools.ant.taskdefs.optional.net.FTP was not found. This looks like one of Ant's optional components. Action: Check that the appropriate optional JAR exists in -ANT_HOME/lib ant-commonsnet.jar显然可以使用: $ ls $ANT_HOME/lib | grep
8 2024-02-26
编程技术问答社区
Android-FTPS会话重用-无字段 sessionHostPortCache
我正在使用Android Studio在Android上开发一个应用程序,我想使用FTP将文件发送到服务器.我需要支持会话重复使用,因为服务器由托管服务提供商托管,并且显然已启用了会话. 我发现了这种反射hack 在这篇文章中许多人用来使之成为可能: // adapted from: // https://trac.cyberduck.io/browser/trunk/ftp/src/main/java/ch/cyberduck/core/ftp/FTPClient.java @Override protected void _prepareDataSocket_(final Socket socket) throws IOException { if (socket instanceof SSLSocket) { // Control socket is SSL final SSLSession session = ((SSLSock
8 2024-02-18
编程技术问答社区
如何用STARTTLS连接到Office365 SMTP?我一直收到 "先发送你好 "的错误
我正在尝试使用StartTLS(在SMTP.Office365.com端口587)连接到Office365 SMTP服务器.当我发送AUTH PLAIN时,它说503 5.5.2 Send hello first.我在做什么错? 这是我与服务器的对话: 02-03 02:58:56.951: I/System.out(1547): 220 MEXPR01CA0064.outlook.office365.com Microsoft ESMTP MAIL Service ready at Wed, 3 Feb 2016 07:58:55 +0000 02-03 02:58:59.781: I/System.out(1547): EHLO codolutions.com 02-03 02:59:12.841: I/System.out(1547): 250-MEXPR01CA0064.outlook.office365.com Hello [49.180.156.25] 02-03 02
2 2024-02-09
编程技术问答社区
Apache Commons FTP storeFileStream返回null
我正在尝试使用apache.commons.ftp库中的Android上传文件. 注意:我正在使用storeFileStream,以便可以跟踪上传的进度. ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); InputStream inputStream = new FileInputStream(localFile); OutputStream outputStream = ftpClient.storeFileStream(remoteFile); byte[] buffer = new byte[8192]; int bytesRead; logMessage("Starting to upload file"); while ((bytesRead = inputStream.read(buffer)) != -1) { total += bytesR
16 2024-02-06
编程技术问答社区
Android FTPClient-retrieveFileStream()总是返回null
我是Android的新手.我正在尝试使用Apache Commons FTPClient将文件从FTP服务器下载到SDCARD.行 inputStream input = client.retrievFileStream("/" + filename); 始终返回null.但是该文件位于FTP位置.请帮助我知道错误在哪里. 我在清单中设置了以下权限; android:name =" android.permission.internet"和android:name =" android.permission.write_external_storage" 我的代码 private static void downLoad(){ FTPClient client = new FTPClient(); FileOutputStream fos = null; try { client.connect("ftp.doamin.com"
12 2024-02-05
编程技术问答社区
FTPClient上传文件 = SocketException: 连接重置
我正在尝试使用XAMPP和Filezilla通过FTP上传简单的TXT文件. 我正在使用 apache commons net 3.0.1 library . 这是我的代码,非常基本的事情: FTPClient client = new FTPClient(); InputStream in = new ByteArrayInputStream("IT WORKS! :D".getBytes()); try { client.connect("localhost"); client.login("user", "password"); client.enterLocalPassiveMode(); client.storeFile("textfile.txt", in); } finally { try { in.close(); client.logout(); client.disco
12 2024-02-03
编程技术问答社区
安卓ftp文件通过明确的TLS传输
我在一遍又一遍地尝试使其正常工作后发布了这个问题,没有成功. 我尝试使用Apache Commons库在Android中实现FTP文件传输.必须通过明确的TLS身份验证进行通信. 我可以成功登录,连接到服务器并列出文件,但是每当我尝试获取文件或存储文件时,我总是会得到超时异常,即使对于2KB TXT文件,我也会获得非常大的超时值. 这是我的代码: FTPSClient ftpClient = new FTPSClient("TLS", false); ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); KeyManagerFactory kmf = getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(null, null); KeyManager km = kmf.g
18 2024-01-31
编程技术问答社区
用FTPS将文件从安卓系统传输到服务器上
我正在使用 Apache Commons FTP库在我的Android应用程序 中 我正在通过FTPS进行连接,尽管它与服务器完美连接,但在传输文件时我有问题. 出于安全原因,订购应用程序的客户端要求在使用Protp. 时请求恢复数据连接的TLS会话. 因此,我在服务器上启用了此选项: 正如我说的,我可以连接到服务器,但不能连接传输文件. 如果我停用了"使用Prot P"框时的"必需的TLS会话恢复",则转移正常工作. 我正在寻找一种使用库进行文件传输的方法,但是没有成功,我知道必须有一种方法. 我给您相关代码的一部分: TransferImagenesFTP.ftpClient = new FTPSClient(); TransferImagenesFTP.ftpClient.connect(InetAddress.getByName("XXX_XXX_XX_X"), 26); TransferImagenesFTP.ftpClient.en
12 2024-01-31
编程技术问答社区
FTPClient在上传到android上的ftp服务器时损坏了图片?
我正在尝试从Android Phone(HTC Desire HD)上传图像(在本地PC上).图像将用于FTP服务器,但已损坏. 和方法(ftpclient.storefile())抛出ioexception(不良文件编号) 请帮助我. 这是损坏的图像链接: http://imageshack.us/photo/my-imimages/820/komikb.jpg/ 这是代码: FTPClient ftpClient = new FTPClient(); try { ftpClient.connect("192.168.2.14"); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE); ftpClient.setSoTimeout(1000
14 2024-01-29
编程技术问答社区
Apache Commons Net FTPClient中的文件名编码
我必须将文件上传到FTP服务器.该文件名包含特殊字母,例如äöü.在FTP服务器上,我需要编码文件名. 我的代码就是这样: import org.apache.commons.net.ftp.FTPClient; FTPClient client = new FTPClient(); ... boolean retval = client.storeFile(fileName, inputStream); 问题是,在storeFile之后,保存在FTP服务器上的文件的名称为ISO-8859-1编码,而不是UTF-8. 如何告诉FTPClient utf-8编码文件名? 解决方案 我尚未测试,但是您可以尝试此: client.setControlEncoding("UTF-8"); 其他解决方案 由于Apache Commons Net 3.0可以使用ftpClient.setAutodetectUTF8( true );启用FTP服务器上的
12 2023-11-11
编程技术问答社区
在Java中上传字节数组到FTP
我的目标是能够将文件上传到FTP服务器,我已经进行了一些研究,并看到了如果文件已经在本地存储的方式上传文件,我有一个返回byte[]的函数,所以我是想知道如何将该文件发送到FTP服务器中的文件是否存在于内存中. private void connect() throws IOException { FTPClient ftpClient = new FTPClient(); ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); ftpClient.connect(ftp.getServer(), ftp.getPort()); int reply = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp
0 2023-11-09
编程技术问答社区
使用FTPClient.getModificationTime获取FTP服务器中文件的最后修改日期,结果为空
我正在尝试从FTP环境中获取文件的最后一个修改日期.结果不如预期. 使用ftpClient.getModificationTime("File path")我得到 null . 使用FTPFile.getTimestamp().getTime()我遇到了错误的最后修改(即,真正的最后修改是今天的,我将获得 wed 02:55:55:22 EST 2004 EST 2004 ). 如何正确修改最后修改? 预先感谢. 解决方案 FTPClient.getModificationTime 返回null当服务器返回错误响应MDTM命令时.通常这意味着: "文件路径" 不存在;或 FTP服务器不支持MDTM命令. 检查 FTPClient.getReplyString() . 事实证明FTP服务器不支持MDTM命令,则必须使用另一种方法来检索时间戳.如果不支持MDTM,MLSD也不会. 在这种情况下,唯一的另一种方法是使用LIST命令来检索
16 2023-10-22
编程技术问答社区
Java代码中的commons-net FTPSClient错误
我首次使用Commons-Net软件包,并使用以下代码通过SSL从Filezilla服务器进行FTP文件.运行程序时,我正面临错误.代码中有什么问题? import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPReply; import org.apache.commons.net.ftp.FTPSClient; public class CommonsNetFTPSTest { public static void main(String[] args) throws Exception { Syst
14 2023-09-27
编程技术问答社区