Скачать файл для чтения вопроса с помощью HttpWebRequest

Если у меня есть URL-адрес для загрузки, www.website.com/myfile.html, поэтому при нажатии на эту ссылку автоматически начинается загрузка, которая может быть, например, myfile.txt, как я могу получить этот файл на С# для чтения.

Это то, что делают Net.WebRequest.Create(url), Net.HttpWebRequest?


person Matt    schedule 24.05.2010    source источник


Ответы (2)


Этого можно добиться с помощью WebClient:

using (var client = new WebClient())
{
    // Download and save the file locally
    client.DownloadFile("http://www.website.com/myfile.html", "myfile.html");
}

Если вы не хотите хранить файл локально, а только читать содержимое, вы можете попробовать это:

using (var client = new WebClient())
{
    string result = client.DownloadString("http://www.website.com/myfile.html");
}
person Darin Dimitrov    schedule 24.05.2010
comment
это все еще работает, если файл .html - это просто ссылка на загрузку? Что касается моей ссылки, когда я перехожу по URL-адресу в своем браузере, он автоматически запускает загрузку. - person Matt; 24.05.2010
comment
Это зависит. Если на странице есть javascript, то он не будет работать. Вам нужно будет подделать запрос на окончательный URL-адрес, позволяющий загрузить файл. - person Darin Dimitrov; 24.05.2010

Используя C # в качестве примера, вот как можно принудительно загрузить файл после нажатия кнопки, ссылки и т. д.

public void DownloadFileLink_Click(object sender, EventArgs e)
{
    //Get the file data
    byte[] fileBytes = Artifacts.Provider.GetArtifact(ArtifactInfo.Id);

    //Configure the response header and submit the file data to the response stream.
    HttpContext.Current.Response.AddHeader("Content-disposition", "attachment;filename=" + "myDynamicFileName.txt");
    HttpContext.Current.Response.ContentType = "application/octet-stream";
    HttpContext.Current.Response.BinaryWrite(fileBytes);
    HttpContext.Current.Response.End();
}

Имея это в виду, вам нужно искать заголовок в ответе, заголовок будет содержать элемент Content-disposition, который будет содержать имя файла, передаваемого в ответе.

person JoeGeeky    schedule 24.05.2010