0

我写了一个网络服务,简而言之,它使用 openpop 来获取电子邮件,将内容插入数据库并保存图像附件。当我在本地保存图像时,它工作得很好,它完全符合它的假设。现在增加的要求是将图像保存到 FTP 目录,所以我可以动态创建我的文件夹(它们是基于时间戳创建的)并且效果很好。我的问题来自当我尝试将它们保存到 ftp 时。是的,我的用户名和密码是正确的,否则我不会创建目录。

Private Sub UploadFile(ByVal fileToSave As FileInfo, ByVal path As String)
    Dim UploadRequest As FtpWebRequest = DirectCast(WebRequest.Create("ftp://UserName:Passowrd@999.99.999.9" & path), FtpWebRequest)
    UploadRequest.Credentials = New NetworkCredential("PicService", "grean.matching18")
    UploadRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
    UploadRequest.UseBinary = True
    UploadRequest.UsePassive = True

    ' Const BufferSize As Integer = 2048
    ' Dim content(BufferSize - 1) As Byte, dataRead As Integer
    Dim bFile() As Byte = System.IO.File.ReadAllBytes(fileToSave.ToString)
    'UploadRequest.ContentLength = content.Length

    Using FileStream1 As FileStream = fileToSave.OpenRead()
        Try
            'open request to send
            Using RequestStream As Stream = UploadRequest.GetRequestStream

            End Using
        Catch ex As Exception
        Finally
            'ensure file closed
            FileStream1.Close()
        End Try
    End Using
End Sub

我也尝试过使用 Passive False 和 Binary False,我对堆栈跟踪进行了更多研究。并找到了这篇文章,但目前还没有解决方案。任何输入将不胜感激,我还针对不同的问题发布了另一个关于 Windows 服务的问题。如果您想试一试,另一个问题不是关于 ftp,而是关于 windows server 2003 上服务的权限

4

1 回答 1

2

这可能不是解决方案,但我发现 URI 字符串必须“恰到好处”,而“恰到好处”的内容因 ftp 服务器而异。

所以ftp://server/directory/file可以在某些服务器上工作,但需要在其他服务器ftp://server//directory/file上工作(注意服务器名称后的双斜杠)

Aso,您的 URI 的“密码”拼写错误:ftp://UserName:Passowrd@999.99.999.9并且您也在单独的代码行中提供凭据。

于 2011-11-10T09:26:56.087 回答