FTP简介:

现在阿里云oss云=对象存储、七牛云oss用的居多,及后台下发静态资源,减少应用后台的负载。

HTTP主要用于基于Web的文件下载以及访问Web服务。一般客户端无须登录就可以访问服务器上的文件和服务。大多HTTP文件传输请求都用于获取网页。

scp、rsync需要用户登录到服务器主机。传输之前需要验证客户端的身份。

FTP 与scp、rsync相同,也可以上传/下载文件,采用unix的用户概念,需要输入有效的用户名密码,也允许匿名登录。FTP主要用于匿名下载公共文件,也可用于2台计算机之间传输文件。

FTP有2种模式:主动、被动。

主动模式下服务器才使用数据端口。在服务器把20号端口设置为数据端口后,它主动连接客户端的数据端口。在被动模式下,服务器只是告诉客户端随机的数据端口号,客户端必须主动建立数据连接。在这种模式下,FTP服务器在建立数据连接时是被动的。


搭建FTP服务器:(阿里云)

对于windows和linux都是可以搭建FTP服务器进行文件的传输的。

这里介绍的是在阿里云服务器上搭建FTP。

由于方便,采用的是宝塔Linux面板:

python 通过fast接口连接数据库返回结果_客户端

 

python 通过fast接口连接数据库返回结果_服务器_02

python 通过fast接口连接数据库返回结果_服务器_03

进入到FTP服务器的目录,以上面的根目录显示为准,比如我这里的:/www/wwwroot/yinleiFTP

上传一些文件方便等会儿的测试。

python 通过fast接口连接数据库返回结果_服务器_04

 


Python编写FTP客户端程序:

流程:

  1. 连接到服务器
  2. 登录
  3. 发出服务请求(希望得到响应)
  4. 退出

使用python的ftp支持时,需要做的只是导入ftplib模块,并实例化一个ftplib.FTP类对象。所有的操作都使用这个对象完成

在一般FTP事务种,使用到的指令有login()、cwd()、dir()、pwd()、stor*()、retr*()、quit()

ftplib.FTP类的常用方法:

方法

描述

login(user='xxx',password='xxx',acct='')

登录FTP服务器,所有参数都是可选的

pwd()

获得当前工作目录

cwd(path)

把当前工作目录设置为path所指示的路径

dir([path[,....[cb]]])

显示path目录里面的内容,可选参数cb是一个回调函数,会传递给retrlines()方法

nlst([path[,...]])

与dir类似,但返回一个文件名列表,而不是显示这些文件名

retrlines(cmd,[,cb])

给定ftp命令(如'RETR filename'),用于下载文本文件。可选回调函数cb用于处理文件的每一行

retrbinary(cmd,cb[,bs=8192[,ra]])

与retrlines类似,只是这个指令处理2进制文件。回调函数cb用于处理每一块(块大小默认为8kb)下载的数据

storlines(cmd,f)

给定ftp命令,用来上传文本文件,要给定一个文件对象f

storbinary(cmd,f[,bs=8192])

与strolines类似,只是这个指令才处理2进制文件。要给定一个文件对象f,上传块大小bs默认为8kb

rename(old,new)

把远程文件old重命名为new

delete(path)

删除位于path的远程文件

mkd(directory)

创建远程目录

rmd(directory)

删除远程目录

quit()

关闭连接并退出

 

代码示例:

python 通过fast接口连接数据库返回结果_上传_05

上面是简单的测试,连接上了阿里云的ftp。

下面编写例子,执行python脚本:

python 通过fast接口连接数据库返回结果_上传_06

由于到饭点了,就不编写更多操作了。。。


关于阿里云和宝塔面板相关的配置问题(解决连接不上ftp):

python 通过fast接口连接数据库返回结果_服务器_07

解决步骤:

1.需要在安全组设置中,对22、21端口放行,并且被动端口(39000 - 40000)也需要处于放行状态

所谓的 "被动端口(39000 - 40000)也需要处于放行状态",即是指在阿里云安全组的添加端口范围为 39000/40000 的设置

python 通过fast接口连接数据库返回结果_客户端_08

python 通过fast接口连接数据库返回结果_服务器_09

配置完后:

python 通过fast接口连接数据库返回结果_上传_10

配置后到宝塔安全里面就会看到:

python 通过fast接口连接数据库返回结果_服务器_11

2.宝塔Linux面板在使用sftp用最高权限连接时一切正常,但是使用在宝塔里面创建的ftp的账号密码,就无法登陆,

(1).进入宝塔Linux面板中的软件管理,找到Pure-Ftpd 1.0.47点设置

python 通过fast接口连接数据库返回结果_服务器_12

python 通过fast接口连接数据库返回结果_服务器_13

将后面的192.168.0.1 修改为你自己的阿里云服务器公网IP地址,同时,去掉ForcePassiveIP的“#”号。然后保存

python 通过fast接口连接数据库返回结果_上传_14

python 通过fast接口连接数据库返回结果_上传_15


测试:

用xftp6新建会话:

python 通过fast接口连接数据库返回结果_服务器_16

python 通过fast接口连接数据库返回结果_上传_17