问题描述
文件下载一直失败,那个文件我能通过retrieveFileStream读取到客户端。只能求高手指点了……publicvoidloadFile(StringremoteFileName,StringlocalFileName){//下载文件OutputStreamosOutputStream=null;try{FilelocalFile=newFile(localFileName);osOutputStream=newFileOutputStream(localFile);booleansuc=ftpClient.retrieveFile(newString(remoteFileName.getBytes("GBK"),"ISO-8859-1"),osOutputStream);if(suc){System.out.println("下载文件成功");}else{System.out.println("文件下载失败");}osOutputStream.close();}catch(Exceptione){e.printStackTrace();}finally{try{if(osOutputStream!=null){osOutputStream.close();}}catch(Exceptione){e.printStackTrace();}}}
解决方案
解决方案二:
额……解决不了啊,网上全是这个方法,为什么我的就不行
解决方案三:
FTP编程,一般就三大问题,楼主看看是哪一个?1.主动模式和被动模式问题;2.命令连接和数据连接问题;3.文件数据的编码传输问题。1.客户端这边存在NAT或者PAT的时候(或者路由器,防火墙的时候),采用被动模式进行下载即可。2.网络较慢或者文件数据较大使得数据传输时间超长,造成控制连接被中间节点(防火墙或路由器)强行断开。当然,有的服务器也会自行断开超时的控制连接。3.传输文件可以选用ACSII码和Binary进行传输,在选用ACSII码时由于操作系统不同,回车换行符的内容有可能会被更改。
解决方案四:
//设置以二进制形式传输ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
解决方案五:
ftpClient.enterLocalPassiveMode();
解决方案六:
引用3楼的回复:
Javacode//设置以二进制形式传输ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
都加了还是不行……再用sun的试试了只能。
解决方案七:
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importnc.itf.doc.DocDelegator;importnc.vo.doc.doc_007.DirVO;importnc.vo.pub.BusinessException;importnc.vo.pub.SuperVO;importorg.apache.commons.net.ftp.FTPClient;importorg.apache.commons.net.ftp.FTPFile;importorg.apache.commons.net.ftp.FTPReply;importorg.apache.commons.net.ftp.FTP;publicclassFtpTool{privateFTPClientftp;privateStringromateDir="";privateStringuserName="";privateStringpassword="";privateStringhost="";privateStringport="21";publicFtpTool(Stringurl)throwsIOException{//Stringurl="ftp://user:password@ip:port/ftptest/psd";intlen=url.indexOf("//");StringstrTemp=url.substring(len+2);len=strTemp.indexOf(":");userName=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);len=strTemp.indexOf("@");password=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);host="";len=strTemp.indexOf(":");if(len<0)//没有设置端口{port="21";len=strTemp.indexOf("/");if(len>-1){host=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);}else{strTemp="";}}else{host=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);len=strTemp.indexOf("/");if(len>-1){port=strTemp.substring(0,len);strTemp=strTemp.substring(len+1);}else{port="21";strTemp="";}}romateDir=strTemp;ftp=newFTPClient();ftp.connect(host,FormatStringToInt(port));}publicFtpTool(Stringhost,intport)throwsIOException{ftp=newFTPClient();ftp.connect(host,port);}publicStringlogin(Stringusername,Stringpassword)throwsIOException{this.ftp.login(username,password);returnthis.ftp.getReplyString();}publicStringlogin()throwsIOException{this.ftp.login(userName,password);System.out.println("ftp用户:"+userName);System.out.println("ftp密码:"+password);if(!romateDir.equals(""))System.out.println("cd"+romateDir);ftp.changeWorkingDirectory(romateDir);returnthis.ftp.getReplyString();}publicbooleanupload(Stringpathname,Stringfilename)throwsIOException,BusinessException{intreply;intj;Stringm_sfilename=null;filename=CheckNullString(filename);if(filename.equals(""))returnfalse;reply=ftp.getReplyCode();if(!FTPReply.isPositiveCompletion(reply)){ftp.disconnect();System.out.println("FTPserverrefusedconnection.");System.exit(1);}FileInputStreamis=null;try{Filefile_in;if(pathname.endsWith(File.separator)){file_in=newFile(pathname+filename);}else{file_in=newFile(pathname+File.separator+filename);}if(file_in.length()==0){System.out.println("上传文件为空!");returnfalse;}//产生随机数最大到99j=(int)(Math.random()*100);m_sfilename=String.valueOf(j)+".pdf";//生成的文件名is=newFileInputStream(file_in);ftp.setFileType(FTP.BINARY_FILE_TYPE);ftp.storeFile(m_sfilename,is);ftp.logout();}finally{if(is!=null){is.close();}}System.out.println("上传文件成功!");returntrue;}publicbooleandelete(Stringfilename)throwsIOException{FileInputStreamis=null;booleanretValue=false;try{retValue=ftp.deleteFile(filename);ftp.logout();}finally{if(is!=null){is.close();}}returnretValue;}publicvoidclose(){if(ftp.isConnected()){try{ftp.disconnect();}catch(IOExceptione){e.printStackTrace();}}}publicstaticintFormatStringToInt(Stringp_String){intintRe=0;if(p_String!=null){if(!p_String.trim().equals("")){try{intRe=Integer.parseInt(p_String);}catch(Exceptionex){}}}returnintRe;}publicstaticStringCheckNullString(Stringp_String){if(p_String==null)return"";elsereturnp_String;}publicbooleandownfile(Stringpathname,Stringfilename){StringoutputFileName=null;booleanretValue=false;try{FTPFilefiles[]=ftp.listFiles();intreply=ftp.getReplyCode();////////////////////////////////////////////////if(!FTPReply.isPositiveCompletion(reply)){try{thrownewException("Unabletogetlistoffilestodowload.");}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}/////////////////////////////////////////////////////if(files.length==0){System.out.println("Nofilesareavailablefordownload.");}else{for(inti=0;i<files.length;i++){System.out.println("Downloadingfile"+files[i].getName()+"Size:"+files[i].getSize());outputFileName=pathname+filename+".pdf";//returnoutputFileName;Filef=newFile(outputFileName);//////////////////////////////////////////////////////retValue=ftp.retrieveFile(outputFileName,newFileOutputStream(f));if(!retValue){try{thrownewException("Downloadingofremotefile"+files[i].getName()+"failed.ftp.retrieveFile()returnedfalse.");}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}}/////////////////////////////////////////////////////////////}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnretValue;}}
解决方案八:
c