.net 直接上载新的Ftp列表框行
我可以(上传/添加)列表框行到当前Ftp列表框行服务器,而不下载以前的Ftp服务器列表框值 而不是上传额外的列表框行到Ftp列表框行服务器 我可以简单地发送listbox新行,然后将其添加到当前listbox ftp服务器行中(如果不删除旧行,则仅添加新行) 现在有Ftp列表框行,而我不必下载和上传整个Ftp列表框 这是我的代码 下载代码(按钮1)[不重要] 上传代码(按钮2) [将新行直接上传到当前ftp列表框非常重要 线路服务器] 问候注意:我看到您正在使用Visual Studio 2012。有些代码可能不受支持(未指定.Net版本)。 如果是这样,请对此进行评论。.net 直接上载新的Ftp列表框行,.net,vb.net,visual-studio-2012,ftp,listbox,.net,Vb.net,Visual Studio 2012,Ftp,Listbox,我可以(上传/添加)列表框行到当前Ftp列表框行服务器,而不下载以前的Ftp服务器列表框值 而不是上传额外的列表框行到Ftp列表框行服务器 我可以简单地发送listbox新行,然后将其添加到当前listbox ftp服务器行中(如果不删除旧行,则仅添加新行) 现在有Ftp列表框行,而我不必下载和上传整个Ftp列表框 这是我的代码 下载代码(按钮1)[不重要] 上传代码(按钮2) [将新行直接上传到当前ftp列表框非常重要 线路服务器] 问候注意:我看到您正在使用Visual Studio 201
WebRequest
为其化身提供支持。见→ .
此方法发送Ftp
APPE
命令。如果上传的文件存在,它将附加新内容。在编写文本文件时,如果需要,您可能希望在每一行附加一个序列。
由于您有一个
列表框
控件,因此可以提取其项
文本,并通过以下方式为每个项字符串值添加换行符:Dim TextLines As String() = listBox1.Items.Cast(Of String)().Select(Function(ln) Environment.NewLine + ln).ToArray()
Dim result As Long = Await FtpAppenAsync("ftp://ftp.server.com/[EntryDir]/[ExistingFile]", TextLines)
您可以按如下方式调用方法:Dim TextLines As String() = listBox1.Items.Cast(Of String)().Select(Function(ln) Environment.NewLine + ln).ToArray()
Dim result As Long = Await FtpAppenAsync("ftp://ftp.server.com/[EntryDir]/[ExistingFile]", TextLines)
这里有一个修改过的方法,允许将一些文本行附加到FTP服务器上的现有文本文件中:(注意
StreamWriter
的编码
:它被设置为默认值
→ 当前本地代码页。未指定编码时,默认为
UTF8
。根据需要修改)。如果需要
Ssl
连接,请添加Imports
,并将这些行粘贴到该方法的顶部:(具体取决于您的连接要求)
Public Async Function FtpAppenAsync(ResourceName As String, TextData As String()) As Task(Of Integer)
Dim request As FtpWebRequest = CType(WebRequest.Create(ResourceName), FtpWebRequest)
request.Credentials = New NetworkCredential("[FtpAccount]", "[FtpPassword]")
request.Method = WebRequestMethods.Ftp.AppendFile
request.UseBinary = True
request.UsePassive = True
Dim TextLinesWritten As Integer = 0
Try
Using ftpStream As Stream = Await request.GetRequestStreamAsync()
Using ftpWriter As New StreamWriter(ftpStream, Encoding.Default)
For Each TextLine As String In TextData
Await ftpWriter.WriteAsync(TextLine)
TextLinesWritten += 1
Console.WriteLine("Uploaded {0} lines", TextLinesWritten)
Next
End Using
End Using
Using response As FtpWebResponse = CType(Await request.GetResponseAsync(), FtpWebResponse)
'Log-Return the StatusCode of the failed upload
If Not (response.StatusCode = FtpStatusCode.ClosingData) Then Return -1
End Using
Catch ex As Exception
'Log/report ex
TextLinesWritten = -1
Throw
End Try
Return TextLinesWritten
End Function
Imports System.Net.Security
Imports System.Security.Cryptography.X509Certificates
'Method code
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
ServicePointManager.ServerCertificateValidationCallback =
New RemoteCertificateValidationCallback(Function(s, Cert, Chain, sslErrors)
Return True
End Function)
request.EnableSsl = True