-1

所以我正在通过 Java 将文件上传到 FTP。当文件位于项目的源位置时,我上传文件没有问题,但是当我想在桌面上上传文件时,它不会上传。

client.connect("REMOVED");
client.login("REMOVED", "REMOVED");

String filename = "Icon.png";
fis = new FileInputStream(filename);

client.storeFile(filename, fis);
client.logout();

如果我这样做,它会起作用,但如果我将其更改为

String filename = "C:\\Users\\username\\Desktop\\Icon.png";

我会收到一个错误,文件在那里,如果我将名称更改为类似

String filename = "C:\\Users\\username\\Desktop\\asdf.png";

那不存在我会得到一个错误但是当我这样做时它不会给出错误但文件不会上传。有任何想法吗?

4

1 回答 1

1

FileInputStream应该明确关闭。我不认为FTPClient这样做。

client.storeFile(filename, fis);
fis.close();

client.logout();
client.disconnect();

因为,您正在上传图像,所以也将文件类型设置为二进制。

client.setFileType(FTPClient.BINARY_FILE_TYPE);


编辑:(首先由@Ingo发现)

虽然,在每个人看来,将绝对路径指定为应该没有问题

String filename = "C:\\Users\\username\\Desktop\\Icon.png";

我们大多数人都错过了看到相同的文件名被传递给

client.storeFile(filename, fis);

由于无法将绝对路径用作远程文件名,因此静默失败。要从上面的绝对路径中删除目录并保留文件名,我们可以将storeFile()调用设为

client.storeFile(filename.substring(filename.lastIndexOf("\\") + 1), fis); // Icon.png
于 2013-07-03T22:53:50.890 回答