Удаленная загрузка файлов с использованием .NET - PullRequest
0 голосов
/ 20 июня 2010

Я пытаюсь загрузить удаленный файл с помощью C # (ASP.NET). Проблема в том, что когда я перехожу к URL-адресу загрузки файла - он загружается идеально. Когда я пытаюсь использовать WebClient.DownloadData (url), я получаю ответ «нет данных для отображения».

Если я просматриваю встроенный браузер VS2010, я все равно получаю это сообщение об ошибке.

Ссылка на файл: http://www.tase.co.il/TASE/Pages/Export.aspx?sn=he-IL_ds&enumTblType=AllSecurities&Columns=he-IL_Columns&Titles=he-IL_Titles&TblId=0&ExportType=3 (Файл CSV)

Как файл можно скачать? есть идеи?

Большое спасибо

Ответы [ 3 ]

0 голосов
/ 20 июня 2010

Многие сайты блокируют загрузку на основе заголовка Referer или User-Agent.

  1. Смотрите "рабочую" загрузку с Скрипач
  2. Смотрите ваш код скачать с Fiddler
  3. Сравните два запроса
  4. Обновить ваш запрос соответствовать «рабочему» случаю.
0 голосов
/ 25 января 2018

Я решил проблему, получив удаленный файл в виде потока.С этого момента я смог прочитать / записать поток в ответ.

//The absolute path to your file
string remoteFile = "http://my.cloudfront.net/videos/vehicle_english_v3.mp4";

//The name of the file you want the user to see when they download the file
int pos = remoteFile.LastIndexOf("/") + 1;
string fileName = remoteFile.Substring(pos, remoteFile.Length - pos);

//Obtain your file as a stream
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(remoteFile);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream fileStream = response.GetResponseStream();

//Write the stream to the response
if (fileStream != null && fileStream.CanRead) {
    context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
    context.Response.ContentType = "application/octet-stream";
    context.Response.ClearContent();
    fileStream.CopyTo(context.Response.OutputStream);
}
0 голосов
/ 20 июня 2010

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

Если мне нужно было сделать предположение, я думаю, что они делают экспорт в файловую систему, когда вы запрашиваете его, поэтомуэто где-то временный файл ... не то, что вы можете просто взять, поэтому, если вы не прошли через шаг, который его создал (кажется, это не делает страница Export.aspx), его там не будет, и их сообщение об ошибкепотому что это «Нет данных для показа».

Существует также возможность, что они явно блокируют вас, чтобы предотвратить любые виды ботов / пиявок ... по сути, предотвращая именно то, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...