.net 使用 FluentFTP 上传文件到ftp 遇到的坑

发布时间 2023-08-25 17:24:59作者: LieJimmy

前言

今天使用 FluentFTP 第三方ftp 库 上传ftp 文件,根据官方文档,写好代码后,在我本地调试,上传到windows ftp 服务器上,成功上传,我当时觉得这也太 easy  了,就直接打包程序 放到服务器上,

接下来发生的事情简直坎坷崎岖

正文

这是使用 FluentFTP 编写的 ftp 上传文件代码,本地测试直接上传成功

我把程序打包放服务器上之后 ,改了配置文件的 ftp 的访问地址  ,直接运行后,直接打脸,ftp 文件无法上传

然后我咨询了提供ftp 地址的第三方,他们说 ftp 服务器为 linux 服务器, 也设置了

被动模式(pasv,主动模式为port), 于是我就添加了下面 unix系统配置

同时设置被动模式的访问,同时还加了 utf8 编码,防止中文乱码,还加了上传文件类型为 binary 流形式上传

再次打包运行,同样报错找不到 根目录

 然后 我就找到官网 (https://github.com/robinrodricks/FluentFTP/wiki)

(官网文档翻译地址:https://www.cnblogs.com/Jeffrey-Chou/articles/12238382.html

想查看 ftp 内部日志,于是我就加了 下面一句代码,将日志输出到控制台,我想看看ftp 上传过程中,具体哪一步出了问题

 同时我通过windows 窗口访问ftp 能正常访问,进入对应路径

 

 加了日志后,通过控制台 看到 ftp 内部找到跟目录 去根目录下面创建文件夹

但是在找根目录的时候提示 不存在的根目录信息,同时错误码提示 550

 于是我就去找了550 对应的解释 未找到目录 或者没有访问权限

(状态码地址 https://cloud.tencent.com/developer/article/1333769

但是我窗口访问是有权限的,于是我就想到,第三方提供的根目录并非 真实的根目录

 我就通过 IE  浏览器访问了一下ftp 地址,发现其跟目录 下并没有 JZ 这个文件夹,而看到有一个 ssd2 的目录,

这个目录 在 ftp 内部日志里面有出现过,于是我就想到可能真实的根目录 为 ssd2 这个文件夹

 于是我更改了跟目录 所在的地址,把 ftp 内部日志上面的地址加入了根目录 /ssd2/hipdata/hiupftp/JZ

果然,当我把真实的根目录设置好后,pdf 文件直接就 上传 FTP 成功了

 结语

当遇到问题 自己无法解决的时候,就多在网上查一查,根据查找的资料 多思考,就会发现其中的问题。

今天遇到的这个问题,刚开始很是头疼,不知道怎么解决,

后来一点一点的排查,再加上思考,一步一步距离成功就更近一步,当解决问题后,那种成就感,就感觉很有意思,

发现问题,找到问题,解决问题,这就是很有意思的一件事情