【问题标题】:Java upload file ftp serverJava上传文件ftp服务器
【发布时间】:2012-08-05 23:26:41
【问题描述】:

我正在尝试用 Java 制作一个函数:

public static void upload_files(String us, String pw, String ip, String f){
 try
 {
    FTPClient client = new FTPClient();
    client.connect(ip);
    client.login(us,pw);
    client.upload(f);
 } catch(Exception e) {
    e.printStackTrace();
 }
}

我添加了 apache 库,但遗憾的是“上传”行出现错误 我想我没有正确使用方法上传,但我不知道如何。

当我用 Netbeans 编译它时,它注意到我有一个错误行“client.upload(f);”

输出中给出的错误是“java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: org.apache.commons.net.ftp.FTPClient.upload

提前谢谢大家。 注意:“f”是我的文件的直接路径


编辑:

问题“完全”解决了,因为现在我在我的 ftp 服务器上上传了一些文件,但遗憾的是它们都是空的,如下所示。

【问题讨论】:

  • 知道您遇到的错误类型会更容易......
  • @Adam:我根本无法在 netbeans 上运行我的程序,因为这个“client.upload(f)”行......根据软件,“找不到符号”。
  • 在这里复制粘贴堆栈跟踪。
  • 当我查看Javadoc for Apache FtpClient 时,我没有看到upload 方法。
  • 请不要编辑问题以删除问题。这使得这个问题对未来的访问者完全没用。

标签: java file upload ftp


【解决方案1】:

Apache FTPClient 没有upload 方法。

它确实有一个名为 storeFile 的方法。

它的参数是文件在服务器上应该具有的名称,以及InputStream。 InputStream 从您的本地文件中读取,因此您需要:

 InputStream is = new FileInputStream( f );
 client.storeFile( some_name, is );

【讨论】:

  • 现在由于netbeans,“storeFile”出现了同样的错误,即“找不到符号”。当我运行它时,会出现这个错误:“java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: storeFile”。
  • 我不认为错误来自 netbeans。这是编译后的错误:“错误:找不到符号storeFile(“test1”,是);符号:方法storeFile(String,InputStream)位置:类主1错误”
  • 我明白了。确实,现在上传了一些文件。可悲的是,该文件完全是空的,但我的主要观点已解决。不,我想知道为什么我的 txt 文件没有上传。但我会在我的 ftp 服务器上上传一些“test1.txt”。
  • 我应该为这样的问题打开一个新主题吗?或者我们可以在这里继续吗?因为上传的文件完全是空的(0 B)。
  • 您可能需要在 InputStream 上调用 flushclose。 API 文档是here。如果您是 Java 新手,这可能看起来有点吓人,但是当您习惯它时就会很清楚。