ftp文件传输

FTP文件传输协议 文件传输协议(File Transfer Protocol,FTP)是用于在 网络 上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。 阅读详情

1.ftp

1.1 client

lib:commons-net-3.5.jar

package com.eplusing.test;

import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;

import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;

import com.paic.beos.adapter.exception.BusinessException;

public class FtpUtil {
	public static final int BUFFER_CAPCITY = 5 * 1024 * 1024;
	public static final String CHARSET = "GBK";
	private static final Logger LOGGER = Logger.getLogger(FtpUtil.class);
	//文件上传目录为FTP用户的home目录
	public static final String IN_PATH = System.getProperty("file.separator");
	//文件下载目录为FTP用户的home目录
	public static final String OUT_PATH = System.getProperty("file.separator");
	public static final String FTP_IP = "10.11.1.12";
	public static final int FTP_PORT = 21;
	public static final String FTP_UID = "ftpusername";
	public static final String FTP_PWD = "ftppassword";
	
	/** 
	 * @param remotePath FTP服务器保存目录 
	 * @param fileName 上传到FTP服务器上的文件名 
	 * @param upContent 上传的字符串内容 
	 * @return 成功返回true,否则返回false 
	 * @throws BusinessException 
	 */  
	public static boolean uploadFile(String remotePath, String fileName, String upContent) throws Exception {  
	    boolean success = false;
	    FTPClient ftpClient = null;
	    try {  
	    	if(null != (ftpClient = connectServer())){
	    		InputStream input = IOUtils.toInputStream(upContent, CHARSET); 
	    		ftpClient.changeWorkingDirectory(remotePath); 
	    		ftpClient.storeFile(fileName, input); 
	    		
	    		input.close();  
	    		ftpClient.logout();  
	    		success = true;  
	    		LOGGER.info("上传文件成功");
	    	}
	    } catch (IOException e) {  
	    	LOGGER.error("FTP上传文件失败");
	    	throw new Exception("上传文件失败");
	    } finally {  
	        if (null != ftpClient && ftpClient.isConnected()) {  
	            try {  
	            	ftpClient.disconnect(); 
	            } catch (IOException ioe) { 
	            	LOGGER.error("关闭FTP连接失败");
	            }  
	        }  
	    }  
	    return success;  
	}
	
	/**
	 * @param remotePath FTP服务器上的相对路径 
	 * @param fileName 要下载的文件名 
	 * @return 
	 */  
	public static InputStream downFile(String remotePath, String fileName) {
	    String remoteFileTotalName = fileName;
	    InputStream in = null;
	    FTPClient ftpClient = null;
	    try {  
	    	if(null != (ftpClient = connectServer())){
	    		//转移到FTP服务器目录
	    		ftpClient.changeWorkingDirectory(remotePath); 
	    		ftpClient.setBufferSize(BUFFER_CAPCITY);
	    		ftpClient.setControlEncoding(CHARSET);
	    		ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
	    		//in = ftpClient.retrieveFileStream(new String(remoteFileTotalName.getBytes("GBK"), "UTF-8"));
	    		in = ftpClient.retrieveFileStream(remoteFileTotalName);
	    		String result = IOUtils.toString(in, CHARSET);
	    		in.close();
	    		ftpClient.completePendingCommand();
	    		
	    		LOGGER.info("从FTP服务器读取回盘文件成功"); 
	    		return IOUtils.toInputStream(result, CHARSET);
	    		
	    	}
	    } catch (IOException e) {  
	    	LOGGER.error("FTP下载文件失败");   
	    } finally {  
	        if (null != ftpClient && ftpClient.isConnected()) {  
	            try {  
	            	ftpClient.disconnect();  
	            } catch (IOException ioe) {  
	            	LOGGER.error("关闭FTP连接失败");   
	            }  
	        }  
	    }  
	    return in;  
	}
	
	/**  
     * 连接到服务器  
     * @return true 连接服务器成功,false 连接服务器失败  
     */   
    public static FTPClient connectServer() {     
        int reply;   
        FTPClient ftpClient = null;
        try {   
        	ftpClient = new FTPClient();   
        	//超时时间30秒
        	ftpClient.setDataTimeout(30000); 
        	ftpClient.connect(FTP_IP, FTP_PORT);   
        	ftpClient.login(FTP_UID, FTP_PWD);  
        	reply = ftpClient.getReplyCode(); 
        	
        	if (!FTPReply.isPositiveCompletion(reply)) {   
        		ftpClient.disconnect();   
        		LOGGER.error("FTP服务拒绝连接!ftp返回码{"+ reply + "}");   
        		return null;   
        	} 
        	
        	ftpClient.setControlEncoding(CHARSET);   
        	ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
        	ftpClient.enterLocalPassiveMode(); 
        	LOGGER.info("登陆FTP服务器成功");
        } catch (SocketException e) {   
        	LOGGER.error("登录FTP服务器 " + FTP_IP + ":" + FTP_PORT + " 失败,连接超时!");   
        	ftpClient = null;   
        } catch (IOException e) {   
        	ftpClient = null;   
        	LOGGER.error("登录FTP服务器 " + FTP_IP + ":" + FTP_PORT + " 失败,FTP服务器无法打开!");   
        }  
        
        return ftpClient;   
    }  
}

 

 

1.1 server

ftp文件传输协议及实现 FTP文件传输协议 文件传输协议的概念: FTP是文件传输协议是INTERNET用户在计算机之间传输文件所使用的协议,用于文件的“下载”和“上传”。 FTP(File Transfer Protocol)是文件传输协议,它规定了在Internet网络上怎样传输文件,通常要由专门的FTP程序来具体实现。 简而言之,即用于连接服务端与客户端,使它们能够进行文件的传输。 传输过程: 实例(文件传输协议... 阅读详情

相关推荐

Linux——FTP文件传输服务

Linux操作系统提供了多种FTP(File Transfer Protocol)文件传输服务,包括常用的vsftpd和proftpdFTP(File Transfer Protocol)是一种常见的文件传输协议,用于在计算机之间传输文件。Linux操作系统中提供了多种FTP文件传输服务,可以通过这些服务在Linux系统上搭建FTP服务器,使其他计算机能够通过FTP协议访问文件。常见的Linux FTP服务有vsftpd、proftpd等,其中vsftpd是最常用的FTP服务之一。

m0_64292323的博客 2245

ftpClient 的上传下载及删除

考虑到以后可能用到这些代码,还是决定分享出来,

Itfemg的专栏 8169

基于FTP协议实现上下位文件传输

文章目录一、组建局域网二、Ping目的站三、搭建FTP服务(Win10)3.1启动FTP服务3.2配置用户3.3添加站点四、文件传输测试五、编程利用FTP传输 一、组建局域网 ①要使上下位电脑之间基于FTP协议实现文件传输,首先需要组建一个局域网。组建局域网使用一根网线(双绞线)即可。 ②关于网线的说明:双绞线其实是有两种的,平行线和交叉线。平行线两端都使用相同的接线标准。在通常情况下,业界都使用...

qq_40742476的博客 1280

FtpClient 使用踩坑-中文名乱码

org.apache.commons.net.ftp.* 上传下载服务器中文文件名踩坑

SSM相关 4621

AUTOSAR BswM配置实战:手把手教你用Vector Davinci Configurator搭建第一个模式管理规则

本文详细介绍了如何使用Vector Davinci Configurator工具配置AUTOSAR BswM模块,实现车身控制ECU的模式管理规则。通过实战案例,从环境准备、核心概念梳理到具体配置步骤,包括ModeRequestPort、ModeCondition、Logical Expression和Rules的构建,帮助工程师快速掌握BswM配置技巧,提升汽车电子软件开发效率。

weixin_28678831的博客 351

手把手教你用Simulink搭建BPSK调制解调系统(附完整参数设置与波形分析)

本文详细指导如何使用Simulink搭建BPSK调制解调系统,涵盖从理论到实践的全流程,包括参数设置、模块连接和波形分析。重点解析调制解调中的关键参数和常见问题,如带通滤波器设计、载波同步等,帮助读者快速掌握BPSK系统的实现与调试技巧。

weixin_27741699的博客 422

Ftpclient.changeWorkingDirectory不起作用,删除文件夹550

困扰了几周的问题解决了,2.点。 1.Ftpclient.changeWorkingDirectory(path)里面path要以/开头。 2.删除文件夹的时候,要切换到父目录。 ftp.changeToParentDirectory();不然无法删掉。 解决删除类的问题: 可以使用 String currentUrl = ftp.printWorkingDirectory(); 查看当前的目录是否正确,来帮助你解决问题。 ...

weixin_47372236的博客 2857

告别QXDM:在Android Studio中调试与验证高通NV读写功能的完整流程

本文详细介绍了在Android Studio中调试与验证高通NV分区读写功能的完整流程,替代传统的QXDM工具。通过JNI接口层、HAL服务层和Diag通信层的架构设计,开发者可以在熟悉的IDE环境中高效完成NV操作,包括环境配置、错误处理和性能优化等关键实践。

weixin_27013291的博客 259

FTP文件传输

FTP文件传输1 介绍2 使用流程3 操作步骤A电脑建立站点启动FTP服务器+IIS管理控制台搜索框中搜索打开IIS新建FTP站点绑定和SSL设置身份验证和授权信息确认完成B电脑访问打开文件窗口输入ftp://ip/(如ftp://192.168.3.10/)开始拷贝文件参考 1 介绍 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP。FTP允

天道酬勤 9万+

SAP MM新手避坑指南:工厂间调拨用301还是303?手把手教你选对移动类型

本文深入解析SAP MM模块中工厂间调拨的301与303移动类型,帮助新手避开常见陷阱。通过对比一步法(301)和两步法(303+305)的核心差异、适用场景及财务影响,提供清晰的决策框架和实战技巧,确保库存调拨的准确性和效率。

weixin_29223603的博客 345

15、远程操作水下航行器(ROV)的非线性控制系统设计

本文探讨了远程操作水下航行器(ROV)的非线性控制系统设计,重点介绍了多变量PID控制、改进的PD控制和滑模控制三种方法。详细阐述了各控制策略的原理、建模与仿真过程,并通过对比分析其在稳态误差、振荡、抖振及跟踪效果等方面的性能表现。文章还提出了针对不同控制方法的优化建议,并给出了选择合适控制策略的决策流程,为ROV高精度运动控制提供了系统性解决方案。

sun99的博客 156

FTP文件传输服务

FTP文件传输协议摘要 FTP(File Transfer Protocol)是用于网络文件传输的标准协议,采用客户-服务器模型,提供文件上传、下载和管理功能。其工作原理包括主动模式(服务器使用20端口发起数据连接)和被动模式(服务器随机开启高端口,由客户端发起连接)。FTP服务器可通过vsftpd软件部署,配置文件(/etc/vsftpd/vsftpd.conf)可控制匿名用户访问、本地用户权限、文件传输日志等设置。匿名用户默认访问/var/ftp目录,本地用户访问各自家目录。安全配置包括chroot限制

m0_57074908的博客 1976

2、实时DSP编程技术及其应用

本文详细介绍了实时数字信号处理(DSP)技术及其应用,涵盖三种流行的浮点DSP处理器系列的特点、开发工具和优化方法。通过具体的应用实例,如语音压缩、音乐信号处理和雷达信号处理,展示了如何在实际项目中应用这些技术,帮助工程师提高系统的性能和可靠性。

cicd6pipeline的博客 837

如何使用FTP上传文件(FTP文件传输)

使用FTP上传文件 利用FTP和云服务器进行文件传输首先需要 云服务器配置好FTP环境后,您可以通过: 1.资源管理器 2.第三方软件 与服务器进行文件传输 与服务器进行文件传输时首先要确保服务器安全组开放了21端口(入站规则为TCP21号) 1.通过资源管理器进行文件传输 打开电脑自带的资源管理器。 在上方输入ftp://主机IP 输入用户名和密码验证通过后即可完成连接 ...

专注企业级视频应用,企业视频直播、MR虚拟直播、教育培训连麦直播 12万+

SSE(Server-Sent Events)完整使用示例

本篇使用Node.js 作为服务端,在浏览器客户端演示SSE的完整实例和演示。实现了一个基于 Server-Sent Events (SSE) 的实时数据推送功能。

oscar999的专栏 750

secureCRT 破解方法

3、输入注册信息打开keygen.exe,点击path,选择SecureCRT的安装目录(例如D:\VanDykeSoftware\Clients)的securecrt.exe打开,继续下一步打开LicenseHelper.exe,如下。1、注册SecureCRT9.1打开keygen.exe,出现以下问题(没有关掉安全防护,一双击打开,Windows会自动识别keygen.exe为bingdu并删除)打开桌面SecureCRT,此界面不输入内容,直接点击下一步。2、存储配置文件夹(可以默认安装)

逆水行舟 1万+

文件传输-FTP使用简介

FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念“下载”(Download)和"上传"(Upload)。......

Ailson Jack的专栏 6618

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

FTP实现文件传输

今天尝试Windows10主机和VM虚拟机里的Windows10进行通过FTP连接传输文件 一、开始 一定要关掉主机的防火墙,否则FTP连接会被防火墙拦截,虚拟机的防火墙关不关闭没有影响。 开启FTP服务,进入控制面板->程序,开启如图所示服务 进入防火墙允许的应用开启FTP服务,如果没有FTP服务则直接下一步 进入管理工具打开Internet information Se...

qq_40624810的博客 7057

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JAVA实现FTP文件传输

一、FTP介绍 FTP是File Transfer Protocol(文件传输协议)的英文简称,即文件协议。用于Internet上的控制文件的双向传输。同时,它是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有的应用程序都遵守同一种协议以传输文件。在FTP的使用中,用户经常遇到两个概念:下载(Download)和上次(Upload)。下载文件就是从远程主机

brianang的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

配置ftp服务器实现文件传输,配置ftp服务器实现文件传输

配置ftp服务器实现文件传输 内容精选换一换云堡垒机支持文件传输功能,以及审计传输的文件。Linux主机和Windows主机的文件传输方式有所区别。Linux主机上传/下载文件,可选择Web运维和FTP/SFTP客户端运维两种方式。Web运维需先将Linux主机配置为SSH协议主机资源。通过Web运维登录目标Linux主机,可在会话窗口文件传输页面,执行上传/下载操作,实现本地与目本章节介绍了修改...

weixin_29207439的博客 1175
上一篇: 高效能人士的七个习惯
下一篇: sftp文件传输
eplusing
博客等级 码龄12年 45粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值