如何在FTP服务器上创建目录

时间:2012-01-27 09:37:26

标签: vb.net

我使用以下代码在FTP服务器上创建文件夹;但它不适合我的情况: -

            Dim sFilePath as string =filepath
            Dim ftpResponse1 As FtpWebResponse
            Dim ftpRequest1 As FtpWebRequest
            Dim IsExists1 As Boolean = True
            ftpRequest1 = CType(FtpWebRequest.Create(sFilePath), FtpWebRequest)
            ftpRequest1.UseBinary = True
            ftpRequest1.Credentials = New NetworkCredential(ZXFTPUSER, ZXFTPPASS)
            ftpRequest1.UsePassive = True
            ftpRequest1.Method = WebRequestMethods.Ftp.MakeDirectory
            'ftpRequest1.KeepAlive = False
            'ftpResponse1 = ftpRequest1.GetResponse()

            'ftpResponse1 = ftpRequest1.GetResponse()
            'Dim strstream1 As Stream = ftpResponse1.GetResponseStream()
            'Dim strreader1 As New StreamReader(strstream1)
            'Console.WriteLine(strreader1.ReadToEnd())
            'strreader1.Close()
            'strstream1.Close()
            'ftpResponse1.Close()

请帮助我。

在上面的例子中,我没有收到任何错误,但是当我要上传一个rar文件时,它会给出以下异常

远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。

文件上传代码如下

 Public Sub FTPUpload(ByVal SourceFile() As IO.FileInfo, ByVal folderLevel As Integer, ByVal ftpPassiveMode As Boolean)
            ZXFTPPASS = "******"
            Dim filePath As New IO.DirectoryInfo(filePaths)
            Dim ftpRequest As FtpWebRequest
            Dim dResult As Windows.Forms.DialogResult
            Dim ftpFilePath As String = ""
            Dim levelPath As String = ""
            Dim iLoop As Integer
            Dim uFile As IO.FileInfo

            For Each uFile In SourceFile
                Try
                    ftpFilePath = levelPath & "/" & uFile.Name
                    ftpRequest = CType(FtpWebRequest.Create(ftpFilePath), FtpWebRequest)

                    ftpRequest.Credentials = New NetworkCredential(ZXFTPUSER, ZXFTPPASS)
                    ftpRequest.UsePassive = ftpPassiveMode
                    ftpRequest.UseBinary = True
                    ftpRequest.KeepAlive = False
                    ftpRequest.Method = WebRequestMethods.Ftp.UploadFile
                    'Read in the file
                    Dim b_file() As Byte = System.IO.File.ReadAllBytes(filePath.FullName & "\" & uFile.Name.ToString())

                    'Upload the file
                    Dim cls_stream As Stream = ftpRequest.GetRequestStream()
                    cls_stream.Write(b_file, 0, b_file.Length)
                    cls_stream.Close()
                    cls_stream.Dispose()

                    'MsgBox("Uploaded Successfully", MsgBoxStyle.Information)
                Catch
                    MsgBox("Failed to upload.Please check the ftp settings", MsgBoxStyle.Critical)
                End Try
            Next
        End Sub

2 个答案:

答案 0 :(得分:5)

浏览各种网站我发现了这个:

Private Function FtpFolderCreate(folder_name As String, username As String, password As String) As Boolean
    Dim request As Net.FtpWebRequest = CType(FtpWebRequest.Create(folder_name), FtpWebRequest)
    request.Credentials = New NetworkCredential(username, password)
    request.Method = WebRequestMethods.Ftp.MakeDirectory

    Try
        Using response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
            ' Folder created
        End Using
    Catch ex As WebException
        Dim response As FtpWebResponse = DirectCast(ex.Response, FtpWebResponse)
        ' an error occurred
        If response.StatusCode = FtpStatusCode.ActionNotTakenFileUnavailable Then
            Return False
        End If
    End Try
    Return True
End Function

答案 1 :(得分:1)

这是关于如何在FTP服务器Via Vb.net上创建目录的工作代码

        Dim folderName As String = "POP/" & Date.Now.Year.ToString & Date.Now.Month.ToString.PadLeft(2, "0"c) & Date.Now.Day.ToString.PadLeft(2, "0"c)

        Dim RequestFolderCreate As Net.FtpWebRequest = CType(FtpWebRequest.Create("ftp://" & server & "/" & folderName), FtpWebRequest)
        RequestFolderCreate.Credentials = New NetworkCredential(username, password)
        RequestFolderCreate.Method = WebRequestMethods.Ftp.MakeDirectory

        Try
            Using response As FtpWebResponse = DirectCast(RequestFolderCreate.GetResponse(), FtpWebResponse)

            End Using

        Catch ex As Exception//catch a expection