1.设置FTP上传
打开控制面板—>程序—>启动或关闭windows功能,找到互联网信息服务勾选✔其中的ftp服务器,web管理,万维网服务,系统就会安装IIS服务管理器了,安装过程可能需要等待几分钟。
回到电脑桌面,右击“计算机”,点击 管理,进入计算机管理界面。在这里,我们就可以看到刚刚添加的IIS服务,接下来的操作就像我们在VPS主机上添加网站差不多的操作步骤了。选中IIS服务——>网站——>右键添加FTP站点
设置ftp基本信息。路径为远程连接的工作路径
选取本机的IP地址,SSL如果不涉密可以选无 (设置端口7开头好像不行,好像就得8开头的)
这里权限先这样设置之后再修改,点击完成即可。
注意:要想通过java程序连接FTP在这里我新建了一个FTP的用户,新建一个用户ggp,密码:123456,如下所示
这里注意一定要把√取消掉确定完成新建,之后修改FTP服务器设置,添加这个特定用户
点击创建的ftp名称—>ftp身份验证—>修改身份认证,禁止匿名身份,双击进入
完成
如何测试呢?
打开我的电脑在最上面输入ftp://+FTP之前设置的IP地址
例如ftp://192.168.1.128:77/
注意:如果输入后弹出FTP文件夹错误,需要查看一下防火墙是否放行FTP服务器
解决方式:
打开防火墙,点击允许应用或功能通过Windows Defender防火墙
java连接ftp
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.9.0</version>
</dependency>
ftp工具类
@Slf4j
public class FtpClient {
/**
* FTP服务地址
*/
private static String FTP_IP;
/**
* FTP端口号
*/
private static Integer FTP_PORT;
/**
* FTP用户名
*/
private static String FTP_USER;
/**
* FTP密码
*/
private static String FTP_PASSWORD;
/**
* FTP根路径
*/
private static String FTP_PATH;
/**
* 映射盘符
*/
private static String FTP_DRIVELETTER;
private static FTPClient ftpClient;
static {
try {
// 根据该类的class文件获取到yaml文件
Yaml yaml = new Yaml();
URL resource = FtpClient.class.getClassLoader().getResource("application-dev.yml");
assert resource != null;
// 把yaml文件加载到对象中
Object obj = yaml.load(new FileInputStream(resource.getFile()));
// 解析对象中的属性并赋值
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(obj));
JSONObject ftp = jsonObject.getObject("fanhai", JSONObject.class).getObject("ftp", JSONObject.class);
FTP_IP = String.valueOf(ftp.get("ip"));
FTP_PORT = Integer.valueOf(String.valueOf(ftp.get("port")));
FTP_USER = String.valueOf(ftp.get("username"));
FTP_PASSWORD = String.valueOf(ftp.get("password"));
} catch (Exception e) {
e.printStackTrace();
}
}
public static FTPClient getFtpConnection() {
ftpClient = new FTPClient();
try {
//连接
ftpClient.connect(FtpClient.FTP_IP, FtpClient.FTP_PORT);
//设置编码
ftpClient.setControlEncoding("UTF-8");
//设置传输文件类型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//登录
ftpClient.login(FtpClient.FTP_USER, FtpClient.FTP_PASSWORD);
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
log.info("==============未连接到FTP,用户名或密码错误=================");
//拒绝连接
ftpClient.disconnect();
} else {
log.info("==============连接到FTP成功=================");
}
} catch (SocketException e) {
e.printStackTrace();
log.info("==============FTP的IP地址错误==============");
} catch (IOException e) {
e.printStackTrace();
log.info("==============FTP的端口错误==============");
}
return ftpClient;
}
public static void closeConnect() {
log.warn("关闭ftp服务器");
try {
if (ftpClient != null) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
ftp工具类,进行文件的上传、下载操作
public class FtpUtils {
/**
* 上传单个文件到远程
*
* @param ftpPath 路径
* @param uploadFileName 文件名
* @param input 输入流
* @return
*/
public static boolean uploadFile(String ftpPath, String uploadFileName, InputStream input) {
boolean issuccess = false;
FTPClient ftpClient = null;
try {
ftpClient = FtpClient.getFtpConnection();
//切换到工作目录
if (!ftpClient.changeWorkingDirectory(ftpPath)) {
ftpClient.changeWorkingDirectory("/");
String[] dirs = ftpPath.split("/");
for (String dir : dirs) {
ftpClient.makeDirectory(dir);
ftpClient.changeWorkingDirectory(dir);
}
}
ftpClient.enterLocalPassiveMode();//工作模式被动
//文件写入 远程文件名;输入流
boolean storeFile = ftpClient.storeFile(uploadFileName, input);
if (!storeFile) {
return issuccess;
}
input.close();
ftpClient.logout();
issuccess = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
}
}
}
return issuccess;
}
private String inputStreamToString(InputStream inputStream) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer stringBuffer = new StringBuffer();
String oneLine = "";
try {
while ((oneLine = bufferedReader.readLine()) != null) {
stringBuffer.append(oneLine);
}
return stringBuffer.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
2.设置HTTP浏览
名称 | 值 |
---|---|
Access-Control-Allow-Headers | Content-Type, api_key, Authorization, X-Requested-With |
Access-Control-Allow-Methods | GET, POST, PUT, DELETE, OPTIONS |
Access-Control-Allow-Origin | * |
最后重启iis服务即可
3.同时将一个文件设置HTTP预览以及FTP上传
先创建一个 http网站 ,也就是先设置http预览,然后再添加ftp协议
标签:FTP,HTTP,String,ftp,private,static,上传,ftpClient From: https://www.cnblogs.com/Gguopeng/p/18413591