我已经编写了一个Web服务,简而言之,它使用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,我对堆栈跟踪进行了更多的研究。 并找到this article但尚无解决方案。任何输入都将受到赞赏,我也posting another question on windows services针对不同的问题。如果您想拍摄它,另一个问题不是ftp,而是Windows Server 2003上的服务权限
答案 0 :(得分:2)
这可能不是解决方案,但我发现URI字符串必须“恰到好处”,而“恰到好处”的内容因ftp服务器而异。
所以ftp://server/directory/file
适用于某些服务器,但需要ftp://server//directory/file
才能在其他服务器上工作(请注意服务器名称后面的双斜杠)
Aso,您的URI的密码错误拼写错误:ftp://UserName:Passowrd@999.99.999.9
并且您也在单独的代码行中提供凭据。