vb.net上传文件到FTP服务器

上传文件到ftp服务器整理:

  声明:以下代码为vb.net代码,使用Visual Studio 2008开发,所有代码均通过测试,可以直接使用。欢迎转载,请注明出处,欢迎拍砖。

web.config 文件配置, 将用户名,密码和ftp服务器的地址存放到web.config文件:

    <appSettings>
<add key="UserName" value="superuser"/>
<add key="PassWord" value="Super2011"/>
<add key="CompleteFTPPath" value="ftp://10.158.168.167/"/>
</appSettings>

文件上传步骤:

  1.读取文件到一个FileStream

  2.设置ftp服务器访问信息,主要是ftp服务器地址,访问ftp服务器的用户名和密码,访问类型,等待时间等待。

  3.在ftp服务器中创建一个空的文件

  3.将源文件读取到byte()数组中

  4.将byte()数组中存放的数据写入到另外一个Stream, 这个stream是我们刚在ftp服务器上创建的空文件

  5.完成写入

以下是文件上传代码:

'''<summary>
''' upload txt file to specified destination.
'''</summary>
'''<remarks></remarks>
Private Sub uploadFileByFTP()
'is uploaded
Dim isUploaded As Boolean = False
'File path
Dim fi As New FileInfo(Server.MapPath(".").ToString & "\TestFileFolder\" & strFileName)
'Create a file in the ftp file server
Dim reqObj As System.Net.FtpWebRequest
reqObj = DirectCast(System.Net.WebRequest.Create(ConfigurationManager.AppSettings("CompleteFTPPath") & fi.Name), System.Net.FtpWebRequest)
'Configure the request methods as uploadfile
With reqObj
.Credentials = New Net.NetworkCredential(ConfigurationManager.AppSettings("UserName"), ConfigurationManager.AppSettings("PassWord"))
.Method = WebRequestMethods.Ftp.UploadFile
.UseBinary = True
.ContentLength = fi.Length
.Timeout = 10 * 1000
End With
Try
Using fsSource As FileStream = New FileStream(Server.MapPath(".").ToString & "\NameplateFile\" & strFileName, FileMode.Open, FileAccess.Read)
' Read the source file into a byte array.
Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}
' Get the length of the source file
Dim numBytesToRead As Integer = CType(fsSource.Length, Integer)
Dim numBytesRead As Integer = 0

While (numBytesToRead > 0)
' Read may return anything from 0 to numBytesToRead.
Dim n As Integer = fsSource.Read(bytes, numBytesRead, _
numBytesToRead)
' Break when the end of the file is reached.
If (n = 0) Then
Exit While
End If
numBytesRead = (numBytesRead + n)
numBytesToRead = (numBytesToRead - n)
End While
numBytesToRead = bytes.Length
' Write the byte array to the ftp file server
Using fsNew As System.IO.Stream = reqObj.GetRequestStream()
fsNew.Write(bytes, 0, numBytesToRead)
isUploaded = True
End Using
End Using
      ' upload successfully
       File.Delete(Server.MapPath(".").ToString & "\TestFileFolder\" & strFileName)
If isUploaded = True Then
lblMsg.Text = "File uploaded successfully!"
Else
lblMsg.Text = ""
End If
Catch ex As Exception
Throw ex
End Try
End Sub


以上是一个简单的上传文件的代码,仅供参考。

相关链接:

create a new FTP site  http://learn.iis.net/page.aspx/301/creating-a-new-ftp-site/



转载于:https://www.cnblogs.com/Dannier/archive/2011/09/21/ftp.html

'模板: Option Explicit Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _ (ByVal sAgent As String, ByVal LAccessType As Long, ByVal sProxyName As String, _ ByVal SProxyBypass As String, ByVal lFlags As Long) As Long Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _ (ByVal hInternetSession As Long, ByVal sServerName As String, _ ByVal nServerPort As Integer, ByVal sUsername As String, _ ByVal sPassword As String, ByVal lService As Long, _ ByVal lFlags As Long, ByVal lContext As Long) As Long Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _ (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _ ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, _ ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _ ByVal dwContext As Long) As Boolean Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _ (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _ ByVal lpszRemoteFile As String, ByVal dwFlags As Long, _ ByVal dwContext As Long) As Boolean Public Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" _ (ByVal hFtpSession As Long, ByVal lpszFileName As String) As Boolean Public Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" _ (ByVal hFtpSession As Long, ByVal lpszExsiting As String, ByVal lpszNew As String) As Boolean Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer Public Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" _ (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, _ lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, _ ByVal dwContent As Long) As Long Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _ (ByVal hFind As Long, lpvFndData As WIN32_FIND_DATA) As Long Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Public Type WIN32_FIND_DATA dwFilAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * 260 cAlternate As String * 14 End Type Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type '窗体: Private Sub Command1_Click() 'FTP下载 lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _ vbNullString, vbNullString, 0&) If lnginet Then lnginetconn = InternetConnect(lnginet, "219.131.192.243", 0, _ "posui", "djposui", 1, 0, 0) If lnginetconn Then blnRC = FtpGetFile(lnginetconn, "/load.txt", "c:\load.txt", 0, 0, 1, 0) If blnRC Then MsgBox "download ok!!!" End If InternetCloseHandle lnginetconn InternetCloseHandle lnginet MsgBox "close ok!!!" Else MsgBox "can't connect" End If Else MsgBox "ftp wrong" End If End Sub Private Sub Command2_Click() 'FTP上传 lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _ vbNullString, vbNullString, 0&) If lnginet Then lnginetconn = InternetConnect(lnginet, "219.131.192.243", 0, _ "administrator", "vai8888", 1, 0, 0) If lnginetconn Then blnRC = FtpPutFile(lnginetconn, "c:\1.txt", "/1.txt", 0, 0) If blnRC Then MsgBox "download ok!!!" End If InternetCloseHandle lnginetconn InternetCloseHandle lnginet MsgBox "close ok!!!" Else MsgBox "can't connect" End If Else MsgBox "ftp wrong" End If End Sub 方法2: '部件INET Private Sub Command1_Click() Me.Inet1.Execute Me.Inet1.URL, "send c:\11.txt /1.txt" '保存 End Sub Private Sub Command2_Click() Me.Inet1.Execute Me.Inet1.URL, "get /2.txt c:\2.txt" '下载 End Sub
VB.NET中查询FTP文件是否存在,可以使用WebClient类来实现。 首先,需要设置FTP服务器的地址、用户名和密码等参数: ```vb.net Dim serverUri As String = "ftp://ftp.example.com" Dim userName As String = "username" Dim password As String = "password" ``` 然后,创建一个WebClient对象,设置其凭据为FTP服务器的用户名和密码,并指定FTP服务器上需要查询的文件路径: ```vb.net Dim ftpClient As New WebClient() ftpClient.Credentials = New NetworkCredential(userName, password) Dim filePath As String = "/path/to/file.txt" Dim uri As New Uri(serverUri & filePath) ``` 接着,可以使用WebClient对象的FTP协议相关方法检查文件是否存在: ```vb.net ' 通过请求获取文件大小,判断文件是否存在 Try Dim fileSize As Long = ftpClient.GetFileSize(uri) Console.WriteLine("文件已存在,大小: " & fileSize) Catch ex As WebException Console.WriteLine("文件不存在:" & ex.Message) End Try ' 或者直接通过请求判断文件是否存在 Try Dim response As String = ftpClient.GetResponse(uri) Console.WriteLine("文件已存在") Catch ex As WebException Console.WriteLine("文件不存在:" & ex.Message) End Try ``` 以上代码示例中,通过WebClient对象的GetFileSize方法获取FTP文件的大小,如果返回值大于0,则说明文件存在;否则,会抛出WebException异常,提示文件不存在。 另外一种判断文件是否存在的方法,是直接使用WebClient对象的GetResponse方法。如果FTP文件存在,则会返回一个WebResponse对象;否则,同样会抛出WebException异常。 总之,在VB.NET中查询FTP文件是否存在,需要使用WebClient类的FTP协议相关方法来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值