设为首页 收藏本站
查看: 1041|回复: 0

ASP.NET实现FTP文件上载类

[复制链接]

尚未签到

发表于 2015-5-26 12:49:40 | 显示全部楼层 |阅读模式
在Visual Basic.NET 2002中进行调用。你会&#8216;将数据移动8位。在Visual Basic .NET 2002中,你必须&#8216;这个数乘以2的8次方&#8216;端口=parts(4)*(2^8)&#8216;进行调用,并且接着以Visual Basic .NET 2003进行注释当前行。port = parts(4)  0) Then  &#8216;发送一个FTP命令重新启动  SendCommand("REST " & offset)  If (m_iRetValue  350) Then   offset = 0  End If End If If (offset > 0) Then  npos = output.Seek(offset, SeekOrigin.Begin) End IfEnd If&#8216;发送一个FTP命令重新找到一个文件。SendCommand("RETR " & sFileName)If (Not (m_iRetValue = 150 Or m_iRetValue = 125)) Then MessageString = m_sReply Throw New IOException(m_sReply.Substring(4))End IfDo While (True) m_aBuffer.Clear(m_aBuffer, 0, m_aBuffer.Length) m_iBytes = cSocket.Receive(m_aBuffer, m_aBuffer.Length, 0) output.Write(m_aBuffer, 0, m_iBytes) If (m_iBytes  0) Then SendCommand("REST " & offset) If (m_iRetValue  350) Then &#8216;远程服务器可能不支持恢复。  offset = 0 End IfEnd If&#8216;发送一个FTP命令,存储一个文件。 SendCommand("STOR " & Path.GetFileName(sFileName))If (Not (m_iRetValue = 125 Or m_iRetValue = 150)) Then MessageString = m_sReply Throw New IOException(m_sReply.Substring(4))End If&#8216;在上载之前,检查文件是否存在。bFileNotFound = FalseIf (File.Exists(sFileName)) Then &#8216;打开输入流读取源文件 input = New FileStream(sFileName, FileMode.Open) If (offset  0) Then  input.Seek(offset, SeekOrigin.Begin) End If &#8216;上载这个文件  m_iBytes = input.Read(m_aBuffer, 0, m_aBuffer.Length) Do While (m_iBytes > 0)  cSocket.Send(m_aBuffer, m_iBytes, 0)  m_iBytes = input.Read(m_aBuffer, 0, m_aBuffer.Length) Loop input.Close()Else bFileNotFound = TrueEnd IfIf (cSocket.Connected) Then cSocket.Close()End If&#8216;如果找不到文件,检查返回值If (bFileNotFound) Then MessageString = m_sReply Throw New IOException("The file: &#8220;& sFileName & " was not found. " & _"Cannot upload the file to the FTP site")End IfReadReply()If (Not (m_iRetValue = 226 Or m_iRetValue = 250)) Then MessageString = m_sReply Throw New IOException(m_sReply.Substring(4))End IfEnd Sub&#8216;从远程FTP服务器上删除一个文件。Public Function DeleteFile(ByVal sFileName As String) As Boolean Dim bResult As Boolean bResult = True If (Not (m_bLoggedIn)) Then  Login() End If &#8216;发送一个FTP命令,删除一个文件。 SendCommand("DELE " & sFileName) If (m_iRetValue  250) Then  bResult = False  MessageString = m_sReply End If&#8216;返回最终结果 Return bResultEnd Function&#8216;在远程FTP服务器上重命名一个文件Public Function RenameFile(ByVal sOldFileName As String, _ByVal sNewFileName As String) As Boolean Dim bResult As Boolean bResult = True If (Not (m_bLoggedIn)) Then  Login() End If &#8216;发送一个FTP命令,对一个文件重命名 SendCommand("RNFR " & sOldFileName) If (m_iRetValue  350) Then  MessageString = m_sReply  Throw New IOException(m_sReply.Substring(4)) End If &#8216;发送一个FTP命令,对一个文件更改为新名称 &#8216;如果新的文件名存在,会被覆盖。 SendCommand("RNTO " & sNewFileName) If (m_iRetValue  250) Then  MessageString = m_sReply  Throw New IOException(m_sReply.Substring(4)) End If &#8216;返回最终结果 Return bResultEnd Function&#8216;这是一个在远程服务器上创建目录的函数Public Function CreateDirectory(ByVal sDirName As String) As Boolean Dim bResult As Boolean bResult = True If (Not (m_bLoggedIn)) Then  Login() End If &#8216;发送一个FTP命令,在FTP服务器上制作一个目录 SendCommand("MKD " & sDirName) If (m_iRetValue  257) Then  bResult = False  MessageString = m_sReply End If &#8216;返回最终结果 Return bResultEnd Function&#8216;这是一个在远程FTP服务器上删除目录的函数Public Function RemoveDirectory(ByVal sDirName As String) As Boolean Dim bResult As Boolean bResult = True &#8216;检查是否已登录FTP服务器 If (Not (m_bLoggedIn)) Then  Login() End If &#8216;发送一个FTP命令,删除在FTP服务器上的目录 SendCommand("RMD " & sDirName) If (m_iRetValue  250) Then  bResult = False  MessageString = m_sReply End If &#8216;返回最终结果 Return bResultEnd Function&#8216;这是一个用来在远程FTP服务器上改变当前工作目录的函数。Public Function ChangeDirectory(ByVal sDirName As String) As Boolean Dim bResult As Boolean bResult = True &#8216;检查你是否在根目录 If (sDirName.Equals(".")) Then  Exit Function End If &#8216;检查是否已登录FTP服务器 If (Not (m_bLoggedIn)) Then  Login() End If &#8216;发送FTP命令,改变在FTP服务器上的目录。 SendCommand("CWD " & sDirName) If (m_iRetValue  250) Then  bResult = False  MessageString = m_sReply End If Me.m_sRemotePath = sDirName &#8216;返回最终结果 Return bResultEnd Function&#8216;关闭远程服务器的FTP链接Public Sub CloseConnection() If (Not (m_objClientSocket Is Nothing)) Then  &#8216;发送一个FTP命令,结束FTP服务系统。  SendCommand("QUIT") End If Cleanup()End Sub#End Region#Region "Private Subs and Functions"&#8216;从FTP服务器得到回应。Private Sub ReadReply() m_sMes = "" m_sReply = ReadLine() m_iRetValue = Int32.Parse(m_sReply.Substring(0, 3))End Sub&#8216;清除一些变量Private Sub Cleanup() If Not (m_objClientSocket Is Nothing) Then  m_objClientSocket.Close()  m_objClientSocket = Nothing End If m_bLoggedIn = FalseEnd Sub&#8216;从FTP服务器读取一行。Private Function ReadLine(Optional ByVal bClearMes As Boolean = False) As String Dim seperator As Char = ControlChars.Lf Dim mess() As String If (bClearMes) Then  m_sMes = "" End If Do While (True)  m_aBuffer.Clear(m_aBuffer, 0, BLOCK_SIZE)  m_iBytes = m_objClientSocket.Receive(m_aBuffer, m_aBuffer.Length, 0)  m_sMes += ASCII.GetString(m_aBuffer, 0, m_iBytes)  If (m_iBytes < m_aBuffer.Length) Then   Exit Do  End If Loop mess = m_sMes.Split(seperator) If (m_sMes.Length > 2) Then  m_sMes = mess(mess.Length - 2) Else  m_sMes = mess(0) End If If (Not (m_sMes.Substring(3, 1).Equals(" "))) Then  Return ReadLine(True) End If Return m_sMesEnd Function&#8216;这是一个你想链接的FTP服务器用于发送命令的函数。Private Sub SendCommand(ByVal sCommand As String) sCommand = sCommand & ControlChars.CrLf Dim cmdbytes As Byte() = ASCII.GetBytes(sCommand) m_objClientSocket.Send(cmdbytes, cmdbytes.Length, 0) ReadReply()End Sub&#8216;创建一个数据包 Private Function CreateDataSocket() As SocketDim index1, index2, len As Int32Dim partCount, i, port As Int32Dim ipData, buf, ipAddress As StringDim parts(6) As Int32Dim ch As CharDim s As SocketDim ep As IPEndPoint&#8216;发送一个FTP命令,用于被动数据链接SendCommand("PASV")If (m_iRetValue  227) Then MessageString = m_sReply Throw New IOException(m_sReply.Substring(4))End Ifindex1 = m_sReply.IndexOf("(")index2 = m_sReply.IndexOf(")")ipData = m_sReply.Substring(index1 + 1, index2 - index1 - 1)len = ipData.LengthpartCount = 0buf = ""For i = 0 To ((len - 1) And partCount

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-70905-1-1.html 上篇帖子: Simple FTP demo application using C#.Net 2.0 下篇帖子: XI/PI ftp.FTPEx: 426 Connection closed
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表