随着帝都雾霾的爆表,我的脑子也跟着混沌起来。。
前几天明明ftp下载文件的功能好好的,今天突然下载不了了。。。。
遂检查了下代码:
@Overridepublic boolean ftpGet(String ftpPath, String fileName, String pathDownload) { FTPClient ftpClient = ftp.connectClient(); if(ftpClient == null) return false ; boolean b = ftp.login(ftpClient, ftp.getUserName(), ftp.getPasswd()); if(!b) { ftp.closeClient(ftpClient); return false; } ftpClient.enterLocalPassiveMode(); String dirStr = null; if(File.separator.equals("\\")){ dirStr = pathDownload.substring(0, pathDownload.lastIndexOf("\\")); }else{ dirStr = pathDownload.substring(0, pathDownload.lastIndexOf("/")); } File file = new File(dirStr); if(!file.exists()){ b = file.mkdirs(); LogUtil.paramAndResult("-ftp get mk dir-", pathDownload, "mk dir--"+b); } file = new File(pathDownload); OutputStream out; try { out = new BufferedOutputStream(new FileOutputStream(file)); } catch (FileNotFoundException e) { e.printStackTrace(); LogUtil.paramAndResult("-ftp get outputstream-", pathDownload, "pathDownload not exists"); ftp.closeClient(ftpClient); return false; } boolean success = false; try { success = ftpClient.retrieveFile(ftpPath+"/"+fileName, out); } catch (IOException e) { e.printStackTrace(); LogUtil.error(e); LogUtil.paramAndResult("-ftp get file exception-", ftpPath+"/"+fileName, ""); } try { out.close(); } catch (IOException e) { e.printStackTrace(); } ftp.closeClient(ftpClient); LogUtil.paramAndResult("-ftp get-", ftpPath+"/"+fileName, "ftp get status-"+success); if(!success && !file.isDirectory()){ file.delete(); } return success;}
奇怪,没有什么问题啊。。
于是,习惯性了看了看vsftpd的日志:
输入命令:tail -n500 /var/log/vsftpd.log
很明显日志输出下载失败了,后面几个传输的都是0字节。。。
后来又重复检查了几遍参数,表面上看没有什么问题 嘿嘿~
这到底发生了什么事情了??????
无奈之下,只好Google。。。然而这对我还是没有卵用。。。
在极度的抓狂之下,突然看到传过来的文件路劲是以/home开头的。。。。
于是乎我明白了什么。。。
原来ftp的root目录已经是/home/ftpuser/res/,而传过来的路径是文件的绝对路径。。。
罪魁祸首竟然是配置文件的ftp路径配错了。。。。
修改结束后,测试一下。OK。。。。
心情变得那么些许的美丽了,哈哈