- 需要导入commons-net jar包
-
<!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version> </dependency>
/** * 保存图片 * @param pathRoot 容器路径 * @param path 需要保存的路径 * @param jumpPath 跳转的路径 * @param describe 描述 * @param displayOrder 排序 * @param image 图片 */
- /**
- * Description: 向FTP服务器上传文件
- * @param host FTP服务器hostname
- * @param port FTP服务器端口
- * @param username FTP登录账号
- * @param password FTP登录密码
- * @param basePath FTP服务器基础目录
- * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
- * @param filename 上传到FTP服务器上的文件名
- * @param input 输入流
- * @return 成功返回true,否则返回false
- */
- // (MultipartFile image)
- //String fileName = image.getOriginalFilename();
- //InputStream is = image.getInputStream();
- //uploadFile("111.11.11.11",21,"xxx","xxx111","image","",fileName,is);
- public static boolean uploadFile(String host, int port, String username,
- String password, String basePath, String filePath, String filename, InputStream input) {
- boolean result = false;
- FTPClient ftp = new FTPClient();
- try {
- int reply;
- ftp.connect(host, port);// 连接FTP服务器
- // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
- ftp.login(username, password);// 登录
- /* ftp.enterLocalPassiveMode();*/
- ftp.setBufferSize(1024);
- ftp.setControlEncoding("gbk");
- ftp.setFileType(FTP.BINARY_FILE_TYPE);
- ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
- reply = ftp.getReplyCode();
- if (!FTPReply.isPositiveCompletion(reply)) {
- ftp.disconnect();
- return result;
- }
- //切换到上传目录
- 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(newString(filename.getBytes("utf-8"),"iso-8859-1"), 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;
- }
- /**
- * Description: 从FTP服务器下载文件
- * @param host FTP服务器hostname
- * @param port FTP服务器端口
- * @param username FTP登录账号
- * @param password FTP登录密码
- * @param remotePath FTP服务器上的相对路径
- * @param fileName 要下载的文件名
- * @param localPath 下载后保存到本地的路径
- * @return
- */
- //(MultipartFile image)
- //String fileName = image.getOriginalFilename();
- //InputStream is = image.getInputStream();
- //downloadFile("123.56.20.45",21,"feizhu","feizhu123","image",fileName,pathRoot+path);
- public static boolean downloadFile(String host, int port, String username,
- String password, String remotePath, String fileName, String localPath) {
- boolean result = false;
- FTPClient ftp = new FTPClient();
- try {
- int reply;
- ftp.connect(host, port);
- // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
- ftp.login(username, password);// 登录
- reply = ftp.getReplyCode();
- if (!FTPReply.isPositiveCompletion(reply)) {
- ftp.disconnect();
- return result;
- }
- ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
- 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;
- }