具体内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
| import cn.gwssi.zygl.config.ZyglConstant; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; import java.io.*;
public class FtpUtil {
public static String host = ZyglConstant.FTP_CONFIG_HOST; public static Integer port = ZyglConstant.FTP_CONFIG_PORT ; public static String username = ZyglConstant.FTP_CONFIG_USERNAME; public static String password = ZyglConstant.FTP_CONFIG_PASSWORD; public static String basePath = ZyglConstant.FTP_CONFIG_BASEPATH;
private static String LOCAL_CHARSET = "GBK";
private static String SERVER_CHARSET = "ISO-8859-1";
public static boolean uploadFile(String filePath, String filename, InputStream input){
boolean result = false; FTPClient ftp = new FTPClient(); try { filename = new String(filename.getBytes("GBK"), "ISO-8859-1");
int reply; ftp.connect(host, port); ftp.login(username, password); reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return result; } if (FTPReply.isPositiveCompletion(ftp.sendCommand( "OPTS UTF8", "ON"))) { LOCAL_CHARSET = "UTF-8"; } ftp.setControlEncoding(LOCAL_CHARSET); if (!ftp.changeWorkingDirectory(basePath+filePath)) { String[] dirs = filePath.split("/"); String tempPath = basePath; for (String dir : dirs) { if (null == dir || "".equals(dir)) continue; tempPath += "/" + dir; if (!ftp.changeWorkingDirectory(tempPath)) { if (!ftp.makeDirectory(tempPath)) { return result; } else { ftp.changeWorkingDirectory(tempPath); } } } } ftp.setFileType(FTP.BINARY_FILE_TYPE); if (!ftp.storeFile(filename, input)) { return result; } input.close(); ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return result;
}
public static boolean downloadFile(String remotePath, String fileName, String localPath) { boolean result = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(host, port); ftp.login(username, password); reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return result; } ftp.changeWorkingDirectory(remotePath); FTPFile[] fs = ftp.listFiles(); for (FTPFile ff : fs) { if (ff.getName().equals(fileName)) { File localFile = new File(localPath + "/" + ff.getName());
OutputStream is = new FileOutputStream(localFile); ftp.retrieveFile(ff.getName(), is); is.close(); } }
ftp.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } return result; }
|
本作品采用知识共享署名 4.0 中国大陆许可协议进行许可,欢迎转载,但转载请注明来自御前提笔小书童,并保持转载后文章内容的完整。本人保留所有版权相关权利。
本文链接:https://royalscholar.cn/2018/04/17/FTP上传下载工具(避免中文乱码)/