Архив

Загрузка файлов через динамический плагин

сохранение файлов в Датакол

Иногда бывает, что файл или картинка ни в какую не хочет загружаться, хотя все делаете правильно. И когда вы смотрите ЛОГ, то видите ошибку 403, отказано в доступе. Или возможно другую ошибку. Это происходит потому, что загрузчик Датакол не передает серверу заголовки User Agent, а возможно и Referer. Чтобы это исправить я написал небольшой динамический плагин для поля в котом мы должны получить прямую ссылку на файл. Т.е чтобы плагин работал в поле должна быть прямая ссылка, например http://site.com/image1.jpg

Ниже приведен код плагина, для его работа нужно добавить 2 подключения using System.Net и using System.IO:

WebClient wc = new WebClient();

string save_path = @"D:\"; // указываем папку для сохранения
string ext       = ".jpg"; // указываем расширение, если его нет в ссылке     
string name      = Path.GetFileName (s);

if (Path.GetExtension (s).Length < 3) 
{
    name = name + ext;    
}

//wc.Headers.Add("Referer",itemInfo.URL);
wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");

wc.DownloadFile(s, save_path + name);

return name;

Все что Вам нужно указать это папку сохранения для переменной save_path. Имя файла берется само из ссылки.

Также в переменную ext внести расширение файла, если у файла оно не указано, так иногда бывает для картинок. По умолчанию, если отсутствует расширение будет JPG.

Строка wc.Headers.Add(“User-Agent” добавит юзер агент, можете прописать свой. Также есть закомментированный код

//wc.Headers.Add("Referer",itemInfo.URL);

Если убрать, то еще будет добавляться заголовок Referer в виде текущей текущей ссылки.

Нужна доработка или готовое решение?

Опишите задачу — отвечу в течение дня и назову сроки и стоимость.

Комментарии: 0

  1. А можете выложить еще эти библиотеки using System.Net и using System.IO? Что-то не могу их найти на 7.15. Заранее благодарю.

    1. Они у Вас должны быть, посмотрите тут в папках c:\Windows\Microsoft.NET\
      Если нужно чтобы Датакол подхватил их, копируйте сюда
      c:\Users\[USER]\AppData\Roaming\Datacol7\DynamicPluginLibs\

  2. Ошибка в работе динамического плагина: ‘data field process plugin’: Исключение во время запроса WebClient.

    1. Нужно смотреть Ваш проект, что-то сделали не так.

Оставить комментарий