各位高手,我用java写了个ftp上传的例子,是利用分析web页面提交过来的数据流
然后将文件部分分离,写到byte变量里,然后用TelnetOutputStream 的 write的 方法写到服务器上。但是刚开始怎么也写不进去,每次上传完了看文件大小都是0kb;后来我改了方法,循环将byte变量写到TelnetOutputStream 里,每次只写1kb
这样才解决了文件上传的问题不过现在又出现了新问题,就是只要是上传压缩文件 ,那么打开上传后的压缩文件都会报
“不可预料的档案文件末端” 这个错误。请问各位高手该如何解决,我写byte变量的代码如下:
/*
连接 ftp .............
*/ ftpclient.binary();
TelnetOutputStream ftpOut = ftpclient.put(destination);
System.out.println(sourceData.length);
int bufsize=1000;
byte[] buf=new byte[bufsize];
int beginpos=0;
int endpos=0;
//每次按buffsize写字节,只到写满为止
do{ if(endpos+bufsize>sourceData.length){//如果到达文件末端
endpos+=(sourceData.length%bufsize);
bufsize=sourceData.length%bufsize;//取剩余文件的大小
}else{
endpos+=bufsize;//否则取bufsize大小
}
//将bufsize大小的文件写到服务器上
for(int i=0;i<bufsize;i++){
buf[i]=sourceData[beginpos+i];
}
ftpOut.write(buf);
beginpos+=bufsize;
}while(endpos<sourceData.length);
ftpOut.close();
然后将文件部分分离,写到byte变量里,然后用TelnetOutputStream 的 write的 方法写到服务器上。但是刚开始怎么也写不进去,每次上传完了看文件大小都是0kb;后来我改了方法,循环将byte变量写到TelnetOutputStream 里,每次只写1kb
这样才解决了文件上传的问题不过现在又出现了新问题,就是只要是上传压缩文件 ,那么打开上传后的压缩文件都会报
“不可预料的档案文件末端” 这个错误。请问各位高手该如何解决,我写byte变量的代码如下:
/*
连接 ftp .............
*/ ftpclient.binary();
TelnetOutputStream ftpOut = ftpclient.put(destination);
System.out.println(sourceData.length);
int bufsize=1000;
byte[] buf=new byte[bufsize];
int beginpos=0;
int endpos=0;
//每次按buffsize写字节,只到写满为止
do{ if(endpos+bufsize>sourceData.length){//如果到达文件末端
endpos+=(sourceData.length%bufsize);
bufsize=sourceData.length%bufsize;//取剩余文件的大小
}else{
endpos+=bufsize;//否则取bufsize大小
}
//将bufsize大小的文件写到服务器上
for(int i=0;i<bufsize;i++){
buf[i]=sourceData[beginpos+i];
}
ftpOut.write(buf);
beginpos+=bufsize;
}while(endpos<sourceData.length);
ftpOut.close();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货