ASP.NET C # загрузка содержимого MemoryStream через проблему FTPwebRequest - PullRequest
2 голосов
/ 12 февраля 2009

Это должно быть довольно просто, и загрузка работает. НО, когда я открываю загруженный файл на 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 Ответ

3 голосов
/ 12 февраля 2009

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

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

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

...