#azure #ftp #azure-web-app-service #blob
#azure #ftp #azure-web-app-service #большой двоичный объект
Вопрос:
Я создал свой FTP (ftp://xyz.in ) с идентификатором пользователя и учетными данными. Я создал asp.net основное приложение API, которое будет копировать файлы с FTP в хранилище больших двоичных объектов Azure. У меня есть решение API, размещенное в C://Test2/Test2 папка. Теперь ниже приведен мой код :
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp:/xyz.in");
request.Method = WebRequestMethods.Ftp.UploadFile;
// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential("pqr@efg.com", "lmn");
// Copy the contents of the file to the request stream.
byte[] fileContents;
// Getting error in below line.
using (StreamReader sourceStream = new StreamReader("ftp://xyz.in/abc.txt"))
{
fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
}
request.ContentLength = fileContents.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(fileContents, 0, fileContents.Length);
}
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
Console.WriteLine($"Upload File Complete, status {response.StatusDescription}");
}
Но в режиме
реального времени с использованием (StreamReader sourceStream = new StreamReader(«ftp://xyz.in/abc.txt «))
Я получаю сообщение об ошибке: System.IO.IOException: ‘Неверен синтаксис имени файла, имени каталога или метки тома: ‘C:Test2Test2ftp:xyz.inabc.txt »
Я не в состоянии понять, откуда это происходит ‘C:Test2Test2 ‘строка будет добавлена к моему FTP. Test2 — это папка, в которой находится мое приложение .Net Core.
Ответ №1:
StreamReader() не принимает URL / URI, он принимает путь к файлу в вашей локальной системе: (прочитайте документ): https://docs.microsoft.com/en-us/dotnet/api/system.io.streamreader.-ctor?view=net-5.0
StreamReader преобразует строку, которую вы указали в качестве имени файла («ftp://xyz.in/abc.txt «), и он ищет его в текущей запущенной папке «.C:Test2Test2 «. Если ваша строка была «abc.txt «, он будет искать файл под названием «abc.txt » в текущей папке, например C:Test2Test2abc.txt .
Вы хотите получить файл с помощью WebClient или чего-то подобного:
WebClient request = new WebClient();
string url = "ftp://xyz.in/abc.txt";
request.Credentials = new NetworkCredential("username", "password");
try
{
byte[] fileContents = request.DownloadData(url);
// Do Something...
}
Комментарии:
1. Спасибо, @Liam Fleming, наконец-то это сработало для меня. Большое спасибо.