上传文件到FTP时不完整

时间:2022-06-02 00:12:23
想将文件上传到FTP服务器上, 看起来一切正常, 但下载后的文件跟本地的文件不一样大小!!!

代码如下:

/**
 * 从流中上传文件
 * @param in 输入流, 将被关闭
 * @param remote 远程路径
 * @throws IOException
 */
public void uploadFile(InputStream in, String remote) throws IOException {
remote = normalizeRemotePath(remote);
buildPath(remote.substring(0, remote.lastIndexOf("/")));
ftp.binary();
TelnetOutputStream ftpOut = ftp.put(remote);
TelnetInputStream ftpIn = new TelnetInputStream(in, true);
byte[] buf = new byte[102400];
int bufsize = 0;
long total = 0;
while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) {
total += bufsize;
System.out.println(bufsize);
ftpOut.write(buf, 0, bufsize);
ftpOut.flush();
}
ftpOut.flush();
System.out.println(total + "\t\t" + remote);
ftpIn.close();
ftpOut.close();
}

5 个解决方案

#1


而且更奇怪的是, 我在调试时(单步跟踪)时都是好的, 直接运行(不设断点)时, 如果只有一个文件, 没有成功过, 如果多个文件一块上传, 则有的成功, 有的失败

急!

#2


也有可能是我的FTP有问题

用SERV-U6.3开的FTP

#3


换个别的FTP好像就好了, 汗

#4


关注

#5


我用的是SUN的包(sun.net.ftp.FtpClient), 估计问题就是这, 可能它有缺陷, 也可能我不会用, 
换成appache的(org.appache.commons.net.ftp.FTPClient)

#1


而且更奇怪的是, 我在调试时(单步跟踪)时都是好的, 直接运行(不设断点)时, 如果只有一个文件, 没有成功过, 如果多个文件一块上传, 则有的成功, 有的失败

急!

#2


也有可能是我的FTP有问题

用SERV-U6.3开的FTP

#3


换个别的FTP好像就好了, 汗

#4


关注

#5


我用的是SUN的包(sun.net.ftp.FtpClient), 估计问题就是这, 可能它有缺陷, 也可能我不会用, 
换成appache的(org.appache.commons.net.ftp.FTPClient)