Файл Webclient.DownloadFile () .aspx не открывается

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

$client = New-Object System.NET.Webclient
$client.DownloadFile( $url, $path )

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

Итак, перехожу на сайт, на котором я действительно хочу его использовать. Опять же, сайт, требующий входа, хотя я просто вхожу в свой браузер, а затем запускаю веб-клиент. Наверное, почему мне никогда не нужно проходить аутентификацию в командном скрипте ....

Файлы этого сайта отформатированы как файлы .aspx. Их нужно открывать в виде файлов PDF. Я могу просто щелкнуть файл, сохранить или открыть, и он естественно работает как файл PDF. Но когда я использую файл webclient.download, он загружается в нужное место ... но я получаю сообщение об ошибке при попытке его открыть.

«Adobe не может открыть файл. Он был неправильно закодирован» ... что-то в этом роде. Я не могу получить сообщение сейчас, потому что я на работе. URL для загрузок имеют следующий формат .....

https://www.WebsiteABC.com/ShowDocument.aspx?DocPath=%7e%5cDocument%5cb75c6093-697a-4e59-bc26-fa2eb24f57f7%5cAUTHORIZATION.PDF

Почему не открывается!?! Это можно обойти. Любая помощь будет оценена. Спасибо!.

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


person Johnny Flowers    schedule 19.10.2012    source источник
comment
Ваш файл был загружен на самом деле или это 0 байт? Можете ли вы сравнить его с файлом, который вы скачали вручную?   -  person Andrey Marchuk    schedule 22.10.2012
comment
Также вы должны проверить содержимое загруженного файла, это может быть веб-страница с кодом для перенаправления на фактический PDF-файл.   -  person David B Heise    schedule 30.10.2012


Ответы (1)


Похоже, ваш сценарий работает в большинстве случаев.

Я нашел эта страница, в которой говорится, что поле HTTP-заголовка пользовательского агента может быть важным для сервера, поэтому попробуйте следующее:

$userAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;)"
$url = "https://www.adobe.com/enterprise/pdfs/pdfarchiving.pdf"
$path = "c:\test.pdf"

$client = New-Object System.NET.Webclient
$client.Headers.Add("user-agent", $userAgent)
$client.DownloadFile( $url, $path )
person Anton    schedule 28.02.2013