首页 > 其他分享 >FTP、HTTP上传

FTP、HTTP上传

时间:2024-09-14 11:26:38浏览次数:10  
标签:FTP HTTP String ftp private static 上传 ftpClient

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

相关文章

  • PbootCMS上传缩略图截取尺寸缩小变模糊解决方案
    如果你在使用PBootCMS时遇到上传图片后缩略图被自动截取且尺寸变小的问题,可以通过调整配置文件中的缩略图尺寸来解决。具体步骤如下:步骤找到配置文件:打开 \config\config.php 文件。修改缩略图配置:找到缩略图配置部分,并调整 max_width 和 max_height 的值。......
  • 怎么把网站设置成HTTPS访问?
    有很多的网站尤其是公司网站都是可以HTTPS访问的,而且在地址栏前面还会显示安全锁,这就是HTTPS证书所起到的作用。没有安装HTTPS证书的网站强制用HTTPS访问会被浏览器提醒不安全。那么我们怎么解决这个问题呢?解决办法一:首先您要有网站域名的管理权,仅仅是网站的访客是申请不了......
  • PbootCMS增加webp和mov等上传文件类型的方法
    在PBootCMS中增加webp和mov等上传文件类型的方法主要包括两个步骤:修改全局上传配置和修改UEditor编辑器的配置。以下是详细的步骤和示例代码:1.修改全局上传配置操作步骤打开配置文件:打开/config/config.php文件。修改上传配置:在大约第30行左右,找到upload配置数组,并......
  • PbootCMS附件上传报错UNKNOW: Code: 8192; Desc: stripos()
    这个问题似乎是由于 stripos() 函数在处理某些字符或字符串时出现了不兼容或者错误的情况。然而,建议的修改方式 stripos($types,chr($ext)) 看起来并不正确,因为 chr() 函数会将一个ASCII值转换成对应的字符,而 $ext 通常是一个表示文件扩展名的字符串。解决方案检......
  • 请求HTTP链接的图片等资源被自动变成HTTPS请求的问题解决(顺便可以解决图片防盗链)
    文章目录问题现象问题根本原因常规问题解决办法非Chrome浏览器:控制CSP协议对HTML页面处理nginx配置中处理Chrome浏览器本地处理方式Chrome浏览器通用解决办法(服务器端无法控制新版Chrome这种行为,只能曲线救国--顺便可以解决图片防盗链)网页的网站使用http域名代理服务......
  • 【IPV6从入门到起飞】5-2 IPV6+Home Assistant(ESP32+MQTT+DHT11+BH1750)传感器采集上
    IPV6+HomeAssistant[ESP32+MQTT+DHT11+BH1750]传感器采集上传监测1背景2实现效果3HomeAssistant配置3-1MQTT配置3-2yaml配置3-3加载配置4ESP32搭建4-1开发环境4-2工程代码5实现效果1背景在上一小节【IPV6从入门到起飞】5-1IPV6+HomeAssistant(搭建......
  • SpringMvc 完整上传文件流程(Ajax请求)头像,图片上传
    1、config包下的操作1.1、创建MyWebApplicationInit类如何创建第一个SpringMvc步骤以配置类的形式代替xml文件(点击链接查看)1.2、设置文件大小(自定义)1.3、创建SpringMvcConfig类并实现WebMvcConfigurer接口@EnableWebMvcpublicclassSpringMvcConfigimplementsWeb......
  • HTTP的强制缓存和协商缓存有什么区别和联系?
    你好,我是沐爸,欢迎点赞、收藏、评论和关注。强制缓存和协商缓存是HTTP缓存机制中的两种主要类型,它们在实现方式、工作原理和应用场景上存在显著差异。以下是两者之间的主要区别:一、定义与实现方式强制缓存:定义:强制缓存是一种强制地从本地缓存中读取数据,而不去请求服......
  • 微信小程序云开发图片上传至云存储,提交到云数据库时的出现的3种文件路径问题
    做本小程序的开发时,考虑到各种因素限制,后台没有自设服务器配置域名,而是使用易上手的原生微信云开发,与之配套的则是云存储、云数据库以及云函数。目前函数处理依旧是在每一个页面的.js文件中,暂未分离迁移至云函数库中。在开发本微信小程序时,有一部分功能是对用户上传的照片进行......
  • CNCB 数据上传
    使用CNCB,中国人自己的数据库。因课题需要,进行数据上传,涉及单细胞、bulk、空间等数据。基于此进行整理。Step1创建账户建议使用单位邮箱,进行注册-按照实际情况进行填写。https://www.cncb.ac.cn/(CNCB官网网站)Step2创建BioPriject基于研究信息进行真实填写简略的信息。......