c#实现ftp上传代码
标签:
it |
using System.Net;
using System.IO;
//调用以下函数
private FtpStatusCode UploadFun(string fileName, string uploadUrl)
{
Stream requestStream = null;
FileStream fileStream = null;
FtpWebResponse uploadResponse = null;
try
{
FtpWebRequest uploadRequest =
(FtpWebRequest)WebRequest.Create(uploadUrl);
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
uploadRequest.Proxy = null;
NetworkCredential nc = new NetworkCredential();
nc.UserName = "aa";
nc.Password = "aa123";
uploadRequest.Credentials = nc; //修改getCredential();错误2
requestStream = uploadRequest.GetRequestStream();
fileStream = File.Open(fileName, FileMode.Open);
byte[] buffer = new byte[1024];
int bytesRead;
while (true)
{
bytesRead = fileStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
requestStream.Write(buffer, 0, bytesRead);
}
requestStream.Close();
uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();
return uploadResponse.StatusCode;
}
catch (UriFormatException ex)
{
}
catch (IOException ex)
{
}
catch (WebException ex)
{
}
finally
{
if (uploadResponse != null)
uploadResponse.Close();
if (fileStream != null)
fileStream.Close();
if (requestStream != null)
requestStream.Close();
}
return FtpStatusCode.Undefined;
}
//调用例子
FtpStatusCode status = UploadFun(@"d:\1\1.txt", "ftp://域名/目录/保存文件名");
FtpStatusCode返回状态说明:
FtpStatusCode指定为文件传输协议 (FTP) 操作返回的状态代码。
AccountNeeded 指示需要服务器上的用户帐户。
ActionAbortedLocalProcessingError 指示发生了阻止完成请求操作的错误。
ActionAbortedUnknownPageType 指示不能采取请求的操作,因为指定的页类型是未知的。RFC 959 的 3.1.2.3 节中介绍了页类型
ActionNotTakenFilenameNotAllowed 指定无法对指定文件执行请求的操作。
ActionNotTakenFileUnavailable 指定无法对指定文件执行请求的操作,原因是该文件不可用。
ActionNotTakenFileUnavailableOrBusy 指定无法对指定文件执行请求的操作,原因是该文件不可用或正在使用中。
ActionNotTakenInsufficientSpace 指示不能执行请求的操作,因为服务器上没有足够的空间。
ArgumentSyntaxError 指示一个或多个命令参数具有语法错误。
BadCommandSequence 指示命令序列的顺序不正确。
CantOpenData 指示无法打开数据连接。
ClosingControl 指示服务器正在关闭管理连接。
ClosingData 指示服务器正在关闭数据连接,并且请求的文件操作成功。
CommandExtraneous 指示服务器未执行该命令,因为无需此命令。
CommandNotImplemented 指示 FTP 服务器未执行该命令。
CommandOK 指示命令成功完成。
CommandSyntaxError 指示命令具有语法错误或不是服务器可识别的命令。
ConnectionClosed 指示连接已关闭。
DataAlreadyOpen 指示数据连接已打开并且请求的传输已开始。
DirectoryStatus 指示目录状态。
EnteringPassive 指示服务器正在进入被动模式。
FileActionAborted 指示不能执行请求的操作。
FileActionOK 指示请求的文件操作成功完成。
FileCommandPending 指示请求的文件操作需要其他信息。
FileStatus 指示文件状态。
LoggedInProceed 指示用户已登录且可发送命令。
NeedLoginAccount 指示服务器需要提供登录帐户。
NotLoggedIn 指示登录信息必须发送到服务器。
OpeningData 指示服务器正在打开数据连接。
PathnameCreated 指示请求的路径名已创建。
RestartMarker 指示响应包含一个重新启动标记回复。此状态附带的说明文本包含用户数据流标记和服务器标记。
SendPasswordCommand 指示服务器需要提供密码。
SendUserCommand 指示服务器已能进行用户登录操作。
ServerWantsSecureSession 指示服务器接受客户端指定的身份验证机制,并且安全数据交换完成。
ServiceNotAvailable 指示此服务不可用。
ServiceTemporarilyNotAvailable 指示此服务现在不可用;请稍后再试您的请求。
SystemType 指示使用 Internet Assigned Numbers Authority(Internet 号码分配机构)出版的 Assigned Numbers(号码分配)文档中发布的系统名的系统类型名称。
Undefined 包含此值是为了完整性,服务器从不返回此值。