Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 直接上载新的Ftp列表框行_.net_Vb.net_Visual Studio 2012_Ftp_Listbox - Fatal编程技术网

.net 直接上载新的Ftp列表框行

.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

我可以(上传/添加)列表框行到当前Ftp列表框行服务器,而不下载以前的Ftp服务器列表框值

而不是上传额外的列表框行到Ftp列表框行服务器

我可以简单地发送listbox新行,然后将其添加到当前listbox ftp服务器行中(如果不删除旧行,则仅添加新行) 现在有Ftp列表框行,而我不必下载和上传整个Ftp列表框

这是我的代码

下载代码(按钮1)[不重要]

上传代码(按钮2)

[将新行直接上传到当前ftp列表框非常重要 线路服务器]

问候

注意:我看到您正在使用Visual Studio 2012。有些代码可能不受支持(未指定.Net版本)。 如果是这样,请对此进行评论。

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