FTP上传下载,容易出现乱码,记得转换
代码如下 | 复制代码 |
packagecom.yinhai.team.action; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream; importorg.apache.commons.net.ftp.FTPClient; importorg.apache.commons.net.ftp.FTPFile; importorg.apache.commons.net.ftp.FTPReply; publicclassFavFTPUtil { /** * 上传文件(可供Action/Controller层使用)未测试 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器保存目录 * @param fileName 上传到FTP服务器后的文件名称 * @param inputStream 输入文件流 * @return */ publicstaticbooleanuploadFile(String hostname,intport, String username, String password, String pathname, String fileName, InputStream inputStream){ booleanflag =false; FTPClient ftpClient =newFTPClient(); ftpClient.setControlEncoding("UTF-8"); try{ //连接FTP服务器 ftpClient.connect(hostname, port); //登录FTP服务器 ftpClient.login(username, password); //是否成功登录FTP服务器 intreplyCode = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(replyCode)){ returnflag; } ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.makeDirectory(pathname); ftpClient.changeWorkingDirectory(pathname); ftpClient.storeFile(fileName, inputStream); inputStream.close(); ftpClient.logout(); flag =true; }catch(Exception e) { e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.disconnect(); }catch(IOException e) { e.printStackTrace(); } } } returnflag; } /** * 上传文件(可对文件进行重命名)未测试 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器保存目录 * @param filename 上传到FTP服务器后的文件名称 * @param originfilename 待上传文件的名称(绝对地址) * @return */ publicstaticbooleanuploadFileFromProduction(String hostname,intport, String username, String password, String pathname, String filename, String originfilename){ booleanflag =false; try{ InputStream inputStream =newFileInputStream(newFile(originfilename)); flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream); }catch(Exception e) { e.printStackTrace(); } returnflag; } /** * 上传文件(不可以进行文件的重命名操作) 未测试 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器保存目录 * @param originfilename 待上传文件的名称(绝对地址) * @return */ publicstaticbooleanuploadFileFromProduction(String hostname,intport, String username, String password, String pathname, String originfilename){ booleanflag =false; try{ String fileName =newFile(originfilename).getName(); InputStream inputStream =newFileInputStream(newFile(originfilename)); flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream); }catch(Exception e) { e.printStackTrace(); } returnflag; } /** * 删除文件 未测试 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器保存目录 * @param filename 要删除的文件名称 * @return */ publicstaticbooleandeleteFile(String hostname,intport, String username, String password, String pathname, String filename){ booleanflag =false; FTPClient ftpClient =newFTPClient(); try{ //连接FTP服务器 ftpClient.connect(hostname, port); //登录FTP服务器 ftpClient.login(username, password); //验证FTP服务器是否登录成功 intreplyCode = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(replyCode)){ returnflag; } //切换FTP目录 ftpClient.changeWorkingDirectory(pathname); ftpClient.dele(filename); ftpClient.logout(); flag =true; }catch(Exception e) { e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.logout(); }catch(IOException e) { } } } returnflag; } /** * 下载文件 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器文件目录 * @param filename 文件名称 * @param localpath 下载后的文件路径 * @return */ publicstaticbooleandownloadFile(String hostname,intport, String username, String password, String pathname, String filename, String localpath){ booleanflag =false; FTPClient ftpClient =newFTPClient(); try{ //连接FTP服务器 ftpClient.connect(hostname, port); //登录FTP服务器 ftpClient.login(username, password); //验证FTP服务器是否登录成功 intreplyCode = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(replyCode)){ returnflag; } //切换FTP目录 booleanb = ftpClient.changeWorkingDirectory(newString(pathname.getBytes(),"ISO-8859-1")); System.out.println(b); FTPFile[] ftpFiles = ftpClient.listFiles(); for(FTPFile file : ftpFiles){ String fName =newString(file.getName().getBytes("iso-8859-1"),"UTF-8"); System.out.println(fName); if(filename.equalsIgnoreCase(fName)){ File localFile =newFile(localpath +"/"+ fName); OutputStream os =newFileOutputStream(localFile); ftpClient.retrieveFile(file.getName(), os); os.close(); } } ftpClient.logout(); flag =true; }catch(Exception e) { e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.logout(); }catch(IOException e) { } } } returnflag; } } |
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整