FTP服务器允许用户通过FTP客户端进行文件的查看、上传和下载。下面是具体的步骤:
1.1.下载EasyFtp Server ,并设置参数,如下所示:
再进入账号管理,设置FTP服务器允许下载/上传文件的目录,如下所示:
上传至FTP服务器
1.导入Jar包
代码实现思路
创建对象:通过FTPClient创建FTP协议的客户端对象:FTPClient ftpClient = new FTPClient();
连接:通过ftpClient.connect(“ip地址”,21); 连接TCP服务器(上传本地图片)
登录:ftpClient.login()
操作(上传):
通过FileInputStream创建文件输入流,用于读取本地图片
存储前设置文件类型:ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
存储文件:
ftpClient.storeFile();
参数1:ftp服务器的存储位置(目录+文件名)
参数2:本地的文件输入流
最后一步:关闭连接
package com.apesource.yuan2;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class demo1 {
public static void main(String[] args) {
//创建基于FTP协议访问文件服务器的客户端对象
FTPClient ftpclient=new FTPClient();
try(FileInputStream in=new FileInputStream("C:\\Users\\Pictures\\Frostpunk\\1.png");) {
//连接服务器并验证用户名密码
ftpclient.connect("192.168.254.123", 21);
ftpclient.login("admin", "123456");
//切换指定文件夹
boolean isChange=ftpclient.changeWorkingDirectory("fengpengfei");
//切换成功
if(isChange) {
//获取当前目录下的所有文件
FTPFile[] ftpfileList=ftpclient.listFiles();
//遍历打印所有文件信息
for(FTPFile file:ftpfileList) {
//解决中文乱码
String fileName=file.getName();
fileName=new String(fileName.getBytes("iso-8859-1"),"gb2312");
System.out.println("文件名称:"+fileName);
SimpleDateFormat fmt=new SimpleDateFormat("yyyy年mm月dd日");
System.out.println("创建时间:"+fmt.format(file.getTimestamp().getTime()));
System.out.println("文件大小:"+file.getSize()+"字节");
}
}
//切换失败
if(!isChange){
//创建文件夹
ftpclient.makeDirectory("fengpengfei");
//重新切换
ftpclient.changeWorkingDirectory("fengpengfei");
}
//设置文件类型
ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
//文件上传
boolean isStore=ftpclient.storeFile(System.currentTimeMillis()+".png", in);
System.out.println("文件上传成功"+isStore);
} catch (Exception e) {
// TODO: handle exception
}finally {
try {
//断开连接
ftpclient.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
文件下载
package com.apesource.yuan2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import org.apache.commons.net.ftp.FTPClient;
public class demo2 {
public static void main(String[] args) {
//创建基于FTP协议访问文件服务器的客户端对象
FTPClient ftpclient=new FTPClient();
try(FileOutputStream out=new FileOutputStream("D:\\test\\"+System.currentTimeMillis()+".jpg");) {
//连接FTP服务器并验证用户名密码
ftpclient.connect("192.168.254.130", 21);
ftpclient.login("admin", "123456");
//切换到想要下载文件所在的目录
ftpclient.changeWorkingDirectory("fpf");
ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);//文件类型
//下载指定文件
boolean isRetrieveFile= ftpclient.retrieveFile("1.jpg", out);
System.out.println("文件下载成功?"+isRetrieveFile);
}catch (Exception e) {
// TODO: handle exception
}finally {
try {
//断开连接
ftpclient.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}