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 ответ:
Попробуйте не использовать
Другими словами, используйтеrequest.UseBinary = true
request.UseBinary = false
. В противном случае он будет загружать содержимое в виде двоичных данных, и, вероятно, поэтому вы видите, что он появляется таким образом на сервере.Например, если вы используете FTP-клиент командной строки в windows, вы должны явно ввести
ascii
передput
вводом текстового файла. Тот же принцип, вероятно, применим и здесь.