FTP、HTTP上传

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协议

posted @   大菠萝zZ  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示