2013-09-29 3 views
-3

На сайте представлены ссылки http://www.example.com/download.php?id=53979. Я знаю, что это файл в формате pdf и вы хотите загрузить его через программу C#. Возможно ли это, и если да, то как?Загрузка файлов через C# с сайта php

+0

Возможный дубликат [Как скачать файл с URL-адреса в C#?] (Http://stackoverflow.com/questions/307688/how-to-download-a-file-from-a-url-in- c) – David

+0

Да, это работает, когда ссылка похожа на http://www.example.com/asd.pdf, но не в этом случае. –

+1

Текст URL-адреса не имеет значения. Когда вы пытаетесь загрузить файл, каким образом он «не работает»? – David

ответ

2

Для того, чтобы скачать файл, вам нужно просто использовать WebClient объект like in the question referenced above:

using (var client = new WebClient()) 
    client.DownloadFile("http://www.datasheet4u.com/download.php?id=53979", "datasheet.pdf"); 

Что делает ваш случай несколько отличается не имеет ничего общего с сервером записываемого в PHP или что-нибудь подобное. Ссылка, которую вы указали (http://www.datasheet4u.com/datasheet/L/M/7/LM741_NationalSemiconductor.pdf.html), кажется, проверяет заголовки Referer при обслуживании файла. Вероятно, это попытка с их стороны предотвратить то, что вы пытаетесь сделать, но на самом деле это не мешает.

Все, что вам нужно сделать, это добавить заголовок Referer к запросу. Что-то вроде этого:

using (var client = new WebClient()) 
{ 
    client.Headers.Add("Referer","http://www.datasheet4u.com/datasheet/L/M/7/LM741_NationalSemiconductor.pdf.html"); 
    client.DownloadFile("http://www.datasheet4u.com/download.php?id=53979", "datasheet.pdf"); 
} 

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