ASP.NET C# загрузка содержимого MemoryStream через ftpwebrequest issue


Это должно быть довольно прямолинейно, и загрузка работает. Но когда я открываю загруженный файл на FTP-сервере, он показывает двоичные данные, которые являются просто какими-то странными символами, которые выглядят так [] [] [] [], и его правильный размер файла. как добавить атрибуты или заголовки, которые будут говорить, что этот файл является XML?

    public bool ProcessBatch(MemoryStream memStream)
    {
        bool result = true;
        FTPaddress = DistributionResources.ftpServer;
        CompleteFTPPath = DistributionResources.ftpPath;

        request = (FtpWebRequest)FtpWebRequest.Create(FTPaddress + CompleteFTPPath);
        request.Credentials = new NetworkCredential("username", "password");
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.UsePassive = true;
        request.UseBinary = true;
        request.KeepAlive = false;

        try
        {

            byte[] buffer = new byte[memStream.Length];

            memStream.Read(buffer, 0, buffer.Length);
            memStream.Close();

            using (Stream reqStream = request.GetRequestStream())
            {
                reqStream.Write(buffer, 0, buffer.Length);
            }

            //Gets the FtpWebResponse of the uploading operation
            response = (FtpWebResponse)request.GetResponse();
            Console.WriteLine(response.StatusDescription); //Display response

        }
        catch(Exception ex)
        {
            result = false;
        }

        return result;
    }

Большое Спасибо

1 2

1 ответ:

Попробуйте не использовать request.UseBinary = true

Другими словами, используйте request.UseBinary = false. В противном случае он будет загружать содержимое в виде двоичных данных, и, вероятно, поэтому вы видите, что он появляется таким образом на сервере.

Например, если вы используете FTP-клиент командной строки в windows, вы должны явно ввести ascii перед put вводом текстового файла. Тот же принцип, вероятно, применим и здесь.