代码如下:
/**
* 从流中上传文件
* @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
用SERV-U6.3开的FTP
#3
换个别的FTP好像就好了, 汗
#4
关注
#5
我用的是SUN的包(sun.net.ftp.FtpClient), 估计问题就是这, 可能它有缺陷, 也可能我不会用,
换成appache的(org.appache.commons.net.ftp.FTPClient)
换成appache的(org.appache.commons.net.ftp.FTPClient)
#1
而且更奇怪的是, 我在调试时(单步跟踪)时都是好的, 直接运行(不设断点)时, 如果只有一个文件, 没有成功过, 如果多个文件一块上传, 则有的成功, 有的失败
急!
急!
#2
也有可能是我的FTP有问题
用SERV-U6.3开的FTP
用SERV-U6.3开的FTP
#3
换个别的FTP好像就好了, 汗
#4
关注
#5
我用的是SUN的包(sun.net.ftp.FtpClient), 估计问题就是这, 可能它有缺陷, 也可能我不会用,
换成appache的(org.appache.commons.net.ftp.FTPClient)
换成appache的(org.appache.commons.net.ftp.FTPClient)