여기 내 고민하는 문제가 있습니다. 하나의 FTP (Dev 사이트)에서 다른 FTP (테스트 사이트)로 이동 중입니다. 이 과정을 바꿀 생각을하지 마십시오. 그것은 내 손에서 벗어났다. 어떤 경우 든 내 방법은 다음과 같습니다.FTPWebRequest : 하나의 FTP에서 다른 FTP로 전송, 대상 파일이 손상됨
Public Function TransferFile(originalFile As String, destinationFile As String) As String
Try
'FileStream for holding the file
Dim uploadRequest As FtpWebRequest = WebRequest.Create(destinationFile)
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile
uploadRequest.Credentials = New NetworkCredential(ftp_user, ftp_pw)
uploadRequest.UseBinary = True
uploadRequest.UsePassive = False
'connect to the server
Dim fileRequest As FtpWebRequest = WebRequest.Create(originalFile)
fileRequest.Method = WebRequestMethods.Ftp.DownloadFile
fileRequest.Credentials = New NetworkCredential(ftp_user, ftp_pw)
fileRequest.UseBinary = True
fileRequest.UsePassive = False
'get the servers response
Dim response As WebResponse = fileRequest.GetResponse()
'retrieve the response stream
Dim stream As Stream = response.GetResponseStream()
CopyStream(stream, uploadRequest.GetRequestStream)
stream.Close()
response.Close()
Return "File transfered"
Catch ex As System.Security.SecurityException
Return ex.Message
Catch ex As Exception
Return ex.Message
End Try
End Function
Public Shared Sub CopyStream(input As Stream, output As Stream)
Dim buffer As Byte() = New Byte(32767) {}
While True
Dim read As Integer = input.Read(buffer, 0, buffer.Length)
If read <= 0 Then
Return
End If
output.Write(buffer, 0, read)
End While
End Sub
이 기능은 ASPX 파일 및 .vb 코드 배후에서 완벽하게 작동합니다. .DLL 파일을 전송하려고하면 서버에 0 바이트로 나타나며 때로는 실제로 전송됩니다. 문제는 원본과 크기가 같음에도 불구하고 손상된 것처럼 행동한다는 것입니다. 누구든지 해결책이 있습니까?
난 그냥 당신의 코드를 사용하여 테스트를했는데, 그것은 나를 위해 잘 작동했습니다. 나는 두 DLL을 보았는데 그것들은 동일했다. –