Зачем публиковать неправильные символы с помощью FTPUpload в классе asp.net (vb)? - PullRequest
0 голосов
/ 21 сентября 2019

Я использую этот класс для загрузки некоторых изображений с FTP с одного сервера на другой:

    Protected Sub FTPUpload(sender As Object, e As EventArgs)
    Dim ftp As String = "ftp://IPSERVER"
    Dim login As String = "ftplogin"
    Dim Mpass As String = "ftpmpass"

    Dim ftpFolder As String = "serverpath"

    Dim fileBytes As Byte() = Nothing
    Dim fileName As String = Path.GetFileName(FileUpload1.FileName)
    Using fileStream As New StreamReader(FileUpload1.PostedFile.InputStream)
        fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd())
        fileStream.Close()
    End Using

    Try
        Dim request As FtpWebRequest = DirectCast(WebRequest.Create(ftp & ftpFolder & fileName), FtpWebRequest)
        request.Method = WebRequestMethods.Ftp.UploadFile

        request.Credentials = New NetworkCredential(login, Mpass)
        request.ContentLength = fileBytes.Length
        request.UsePassive = True
        request.UseBinary = True
        request.ServicePoint.ConnectionLimit = fileBytes.Length
        request.EnableSsl = False

        Using requestStream As Stream = request.GetRequestStream()
            requestStream.Write(fileBytes, 0, fileBytes.Length)
            requestStream.Close()
        End Using

        Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)

        lblMessage.Text &= fileName & " uploaded.<br />"
        response.Close()
    Catch ex As WebException
        Throw New Exception(TryCast(ex.Response, FtpWebResponse).StatusDescription)
    End Try
End Sub

ftp работает, но когда я проверяю результат, исходный файл, который начинался с:

IHDR   Ô   ˜   «š7=   TPLTEGpLí…ÞÌÍãÜÜñº¼Û (øððè +ýúúôäåÁ‹Ò¹¹ðž øÒÓÎ

будет возвращено в ftp следующим образом:

IHDR   �   �   ��7=   TPLTEGpL큅�������� (���� +���������ҹ������ 

Пожалуйста, где я не прав?

1 Ответ

0 голосов
/ 21 сентября 2019

все в порядке.мне не нужно делать кодировку UTF, просто возьмите байты.

fileStream = ImageUpload.PostedFile.InputStream
Dim fileBytes(0 to fileStream.Length - 1) as Byte
fileStream.Read(fileBytes, 0, fileBytes.Length)
fileStream.Close()
...