2015-10-10 2 views
2

Я ищу, чтобы передать код авторизации из формы в контроллер, оценить код и, если он соответствует, вызвать ftp-сайт для запуска события загрузки, пользователь получает файл.C# WebClient - загрузка файла с ftp на клиент

У меня есть два ограничения: 1. Мне нужно передать учетные данные ftp-сайта, 2. Мне нужно скрыть URL-адрес от пользователя. После входа в систему, «как пользователь» на ftp-сайте, я могу вставить URL-адрес в браузер и инициировать событие автоматической загрузки zip-файла. Я думаю, что мне нужно использовать нижеприведенный подход для передачи учетных данных, однако я хочу, чтобы не загружать первый файл на свой сервер, чтобы затем перевернуть его и передать его пользователю. (удвоить время обработки?) Мне нужен способ передать учетные данные сайту ftp и запустить событие загрузки, чтобы перейти прямо к пользовательскому компьютеру в обычную папку «скачать» ...

У меня нет подскажите, как это сделать, и не можете найти какие-либо солидные ссылки. Большинство из них показывает, как обрабатывать его для пользователя с сервера, потому что файл хранится там, где работает приложение. Любые ссылки или образцы оценены!

Заранее благодарен!

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult AuthCode(string code) 
    { 
     var username = "someuser"; 
     var password = "somepass"; 

     if(code.Equals("$%^123XYZ")) 
     { 
      var url = "ftp://url.zip"; 
      var fileName = "Some Name"; 

      var client = new WebClient(); 
      client.Credentials = new NetworkCredential(username, password); 
      client.DownloadFile(url, fileName); 

      return View("GoodCode"); 
     } 
     else 
     { 
     return View("BadCode"); 
     } 
    } 
+0

является FTP URL действительный адрес .. если так .. у вас есть доступ/права на это место FTP .. звучит довольно прямо к мне .. – MethodMan

+0

да его действительный url, он требует имя пользователя и пароль, но как только он вошел в него, поэтому я думаю, что вышеупомянутый подход близок к тому, что мне нужно делать. Проблема, с которой я сталкиваюсь (или, по крайней мере, я думаю), нацелена на то, где сохранить файл, например. рабочий стол конечного пользователя. Какие-либо предложения? – JReam

+0

хорошо, что я вижу, вы просто загружаете имя файла без расширения пути или имени файла .. не могли бы вы открыть диалоговое окно сохранения, после того как пользователь выберет путь к файлу на своей локальной машине .. тогда начнется загрузка. . – MethodMan

ответ

0

FtpWebRequest класс поддерживает поток в ответ. Here - пример загрузки файла с FTP с использованием потока.

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

return new FileStreamResult(stream, "application/pdf") 
{ 
    result.FileDownloadName = "somefile.pdf"; 
}; 
+0

удивительный, спасибо !!! собираюсь пойти попробовать! – JReam

Смежные вопросы