我在将文件上传到FTP服务器时遇到了一些问题。
我写了这段代码,应该连接到FTP服务器,登录,并使用Apache Commons Net FTPClient上传文件:
FTPClient client = new FTPClient();
client.connect("somesite.com");
client.login("user", "password");
System.out.println("connected");
client.cwd("images/bar");
System.out.println("cwd succesful. Full reply: "+client.getReplyString());
FileInputStream fis = new FileInputStream(new File(System.getProperty("user.dir")+File.separator+"current_690.jpg"));
client.storeFile(image_name, fis);
System.out.println("Succesful store. Full reply: "+client.getReplyString());
终端的输出是:
connected
cwd succesful. Full reply: 250 OK. Current directory is /images/bar
Succesful store. Full reply: 226-File successfully transferred
226 3.190 seconds (measured here), 9.99 Kbytes per second
问题在于,如果我转到我的user.dir
并打开current_690.jpg
,它会正确显示我的图像,但是如果我下载刚刚使用我的FTPClient上传的图像,当我打开它时, os说Unable to preview the image, probabily it's corrupted or it's too big.
事实上我注意到在我的电脑上我的图像大小是32708
个字节,但是在服务器上它显示我32615
个字节,所以我认为图像的最后一部分没有被上传
为什么呢?我错过了什么吗?
答案 0 :(得分:6)
默认文件类型是ASCII,因此您需要通过设置client.setFileType(FTPClient.BINARY_FILE_TYPE);
告诉它将其转换为二进制文件
在你调用storefile之前。