FTP上传文件,报“系统错误”

//指定执行什么命令

reqFTP.Method = WebRequestMethods.Ftp.UploadFile;

// 指定数据传输类型

reqFTP.UseBinary = true;

reqFTP.UsePassive = false;

// 上传文件时通知服务器文件的大小

reqFTP.ContentLength = fileInf.Length;

reqFTP.Timeout = 30000;

// 缓冲大小设置为2kb

int buffLength = 2048;

byte[] buff = new byte[buffLength];

int contentLen;

FileStream fs = null;

Stream strm = null;

try

{

FileUtil.getInstance().backupLog(“111111111111111”, IniUtil.getInstance().b_debug);

// 打开一个文件流 (System.IO.FileStream) 去读上传的文件

fs = fileInf.OpenRead();

FileUtil.getInstance().backupLog(“22222222222”, IniUtil.getInstance().b_debug);

// 把上传的文件写入流

strm = reqFTP.GetRequestStream();

FileUtil.getInstance().backupLog(“3333333333333”, IniUtil.getInstance().b_debug);

// 每次读文件流的2kb

contentLen = fs.Read(buff, 0, buffLength);

FileUtil.getInstance().backupLog(“4444444444444444”, IniUtil.getInstance().b_debug);

// 流内容没有结束

while (contentLen != 0)

{

// 把内容从file stream 写入 upload stream

strm.Write(buff, 0, contentLen);

FileUtil.getInstance().backupLog(“555555555555555”, IniUtil.getInstance().b_debug);

contentLen = fs.Read(buff, 0, buffLength);

}

if (b_isFtpBackup)

{

FileUtil.instance.Log(filePath + “–上传成功!”);

}

else

{

if (MainForm.instance.bufferFTPBtn.Enabled)

{

FTPStateChange(“缓存文件上传中…”);

FileUtil.getInstance().backupLog(“缓存文件上传中…”);

BufferFTPChange(false);

}

}

}

catch (Exception ex)

{

if (ftpBufferUploadRuuning)

{

FTPStateChange(“FTP连接失败!”);

FileUtil.getInstance().backupLog(“FTP连接失败!”);

BufferFTPChange(true);

}

b_ftpRet = false;

if (b_isFtpBackup)

{

FileUtil.instance.Log(filePath + “–上传失败!”);

}

FileUtil.instance.backupLog("Ftphelper Upload Error --> " + ex.Message);

if (IniUtil.getInstance().isBackup.Equals(“1”) && b_isFtpBackup)

{

FileUtil.getInstance().WriteFile(FileUtil.getInstance().ftpBufferPath + “\” + fileName, fileContent, null, FileMode.Create);

}

}

finally

{

// 关闭两个流

try

{

if (strm != null)

{

strm.Close();

}

}

catch (Exception e)

{

FileUtil.instance.backupLog(“strm.Close() exception,” + e.Message);

}

try

{

if (fs != null)

{

fs.Close();

}

}

catch (Exception e)

{

FileUtil.instance.backupLog(“fs.Close() exception,” + e.Message);

}

}

}

return b_ftpRet;

}

}

2、检测FTP是否可用代码


public Boolean CheckFtp()

{

Boolean ret = true;

try {

FileUtil.getInstance().Log(“checkftp start,” + ftpURI);

FtpWebRequest reqFTP;

// 根据uri创建FtpWebRequest对象

FileUtil.getInstance().Log(“根据uri创建FtpWebRequest对象…”);

reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));

FileUtil.getInstance().Log(“获取ListDirectory…”);

reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;

FileUtil.getInstance().Log(“userID,password登录…”);

reqFTP.UseBinary = true;

reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

FileUtil.getInstance().Log(“登录后等待response…”);

FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

FileUtil.getInstance().Log(“获取response成功,ftp连接成功!”);

} catch (Exception e) {

if(!b_ftpRet){

FileUtil.instance.Log(“CheckFtp Exception:” + e.Message);

}

ret = false;

}

return ret;

}

测试FTP连接居然用了10秒,而我的FTPtimeout设置的是2秒,故失败,但是为什么这么慢呢?

3、FTP工具测试


=======================================================

二、原因分析

======

1、FtpWebRequest.KeepAlive


线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

一线互联网P7面试集锦+各种大厂面试集锦

学习笔记以及面试真题解析

0200717112614594.png)

1、FtpWebRequest.KeepAlive


线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

[外链图片转存中…(img-xdD1ncQi-1721134002237)]

一线互联网P7面试集锦+各种大厂面试集锦

[外链图片转存中…(img-gqGlySj5-1721134002238)]

学习笔记以及面试真题解析

[外链图片转存中…(img-O9BmN7mS-1721134002238)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值