WebClient.DownloadFileAsync загрузка файла на сервер - PullRequest
1 голос
/ 25 октября 2010

Я загружаю файл из удаленного местоположения на мой локальный компьютер.Используемые мной пути сохраняются в web.config и имеют следующий формат:

<add key="FileFolder" value="Files/"/>
<add key="LocalFileFolder" value="D:\REAL\" />

код, который я использую для загрузки:

  CreateDirectoryIfDoesNotExist();
  WebClient webClient = new WebClient();
  webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(webClient_DownloadFileCompleted);
  webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
  webClient.DownloadFileAsync(new Uri(context.Server.MapPath(ConfigurationManager.AppSettings["FileFolder"].ToString() + myfilename)), ConfigurationManager.AppSettings["LocalFileFolder"].ToString() + myfilename);

Когда я развертываю его насервер;и запустить мою программу, я получаю сообщение о том, что загрузка успешно завершена.Но проблема в том, что файл загружается на сервер в папке с файлами (LocalFileFolder).Я хочу, чтобы это было загружено на локальной машине.Что я делаю не так?

1 Ответ

3 голосов
/ 25 октября 2010

Что вы делаете неправильно, так это то, что вы запускаете этот код на сервере. Если это веб-приложение (я полагаю, это происходит из-за того, что вы используете HttpContext), вам нужно передать файл в ответ вместо использования WebClient. Затем пользователь получает диалоговое окно загрузки в своем браузере и решает сохранить файл там, где он хочет (вы не можете переопределить это).

Итак:

context.Response.ContentType = "text/plain";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=foo.txt");
context.Response.TransmitFile(@"d:\pathonserver\somefile.txt");

Или вы можете написать настольное приложение (WPF, WinForms), которое вы запускаете на клиентском компьютере и которое использует WebClient для загрузки файла с удаленного сервера.

...