Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
30 / 30 / 18
Регистрация: 20.06.2012
Сообщений: 165

GeckoWebBrowser (GeckoFx.33) Не скачивает файлы по ссылке

29.01.2018, 17:26. Показов 2195. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, проблема в следующем, если использовать обычный Webbrowser который использует движок IE, то при скачивание файлов по ссылке мучает окно с запросом на скачивание, посоветовали воспользоваться сторонним приложением, я поковырялся и нашел Gecko, но появилась следующая проблема, если я в браузере нажимаю ссылку на скачивание то не чего не происходит и файл не скачивается. Может нужно указать путь в браузере, я не знаю как его настроить.
Может кто с этим сталкивался, подскажите, что делать???

Добавлено через 1 час 29 минут
Очень мало тем и примеров на Gecko. Радует, что она немного схожа с обычным Webrowser-ом. Я нашел ответ на свой вопрос, если кому нужно приведу ниже:
подключение события:
C#
1
2
LauncherDialog.Download -= LauncherDialog_Download;
LauncherDialog.Download += LauncherDialog_Download;
Само событие:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void LauncherDialog_Download(object sender, LauncherDialogEvent e)
        {
            nsILocalFile objTarget = Xpcom.CreateInstance<nsILocalFile>("@mozilla.org/file/local;1");
 
            using (nsAString tmp = new nsAString(@Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\temp.tmp"))
            {
                objTarget.InitWithPath(tmp);
            }
 
            //Save file dialog
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
 
            //Close viewer form if we can't read the file in the viewer_form
            if(FormIsOpen(Application.OpenForms,typeof(viewer_form)))
            {
                viewer_form.ActiveForm.Dispose();
            }
 
            saveFileDialog1.Filter = "All files (*.*)|*.*";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;
            saveFileDialog1.FileName = e.Filename;
 
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                    nsIURI source = IOService.CreateNsIUri(e.Url);
                    nsIURI dest = IOService.CreateNsIUri(new Uri(@saveFileDialog1.FileName).AbsoluteUri);
                    nsAStringBase t = (nsAStringBase)new nsAString(System.IO.Path.GetFileName(@saveFileDialog1.FileName));
 
                    nsIWebBrowserPersist persist = Xpcom.CreateInstance<nsIWebBrowserPersist>("@mozilla.org/embedding/browser/nsWebBrowserPersist;1");
                    nsIDownloadManager DownloadMan = null;
                    DownloadMan = Xpcom.CreateInstance<nsIDownloadManager>("@mozilla.org/download-manager;1");
                    nsIDownload download = DownloadMan.AddDownload(0, source, dest, t, e.Mime, 0, null, (nsICancelable)persist, false);
 
                    if (download != null)
                    {
                        persist.SetPersistFlagsAttribute(2 | 32 | 16384);
                        persist.SetProgressListenerAttribute((nsIWebProgressListener)download);
                        persist.SaveURI(source, null, null, null, null, (nsISupports)dest, null);
                    }
 
                    myStream.Close();
                }
            }
        }
Добавлено через 1 час 43 минуты
Протестировал этот пример, он работает для загрузки файлов по прямой ссылки, но не закачивает файлы которые имеют временные ссылки с куками. Выдает ошибку 500 или файл закачивает с размером 1кб((
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2018, 17:26
Ответы с готовыми решениями:

почему не скачивает по прямой ссылке?
Вот этот код работает: ..... URLDownloadToFile(0, urlfile.c_str(), savefile.c_str(),0,0); но если пытаюсь указать напрямую...

Скачивание несколько Файлов - Скрипт скачивает 2 копии файла указанного по первой ссылке
Имеется такой код(скопипирован где то в инете и коряво модифицирован мной) strFileURL1 = &quot;прямая ссылка на файл 1&quot; ...

Сайты не открывает, но файлы скачивает!
Здравствуйте! У меня такая проблема, дома стоит Wi-Fi... Я хочу зайти на какой нибудь сайт, но интернет практически не открывает страницу...

1
30 / 30 / 18
Регистрация: 20.06.2012
Сообщений: 165
31.01.2018, 02:26  [ТС]
Всем спасибо!!! Решил я свою проблему. Оказалось вся причина в том, что место куда я хотел записать файл было защищено от записи, то есть тестировал на Win 7/10 создал на диске C:/temp , а когда я указал другой путь на диск E:/temp то все нормально стало сохраняться. Ну или нужно запускать программу от имени Администратора. А и сама причина по которой я начал использовать именно Gecko это возможность отказа от использование окна загрузки, и загружать файлы в указанное место.
Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void LauncherFileDownload(Object sender, LauncherDialogEvent e)
        {
            nsIURI source = IOService.CreateNsIUri(e.Url);
            nsIURI dest = IOService.CreateNsIUri(new Uri(@"E:/temp/" + e.Filename).AbsoluteUri);
            nsAStringBase t = (nsAStringBase)new nsAString(System.IO.Path.GetFileName(@"E:/temp/" + e.Filename));
 
            nsIWebBrowserPersist persist = Xpcom.CreateInstance<nsIWebBrowserPersist>("@mozilla.org/embedding/browser/nsWebBrowserPersist;1");
 
            nsIDownloadManager DownloadMan = null;
            DownloadMan = Xpcom.CreateInstance<nsIDownloadManager>("@mozilla.org/download-manager;1");
            nsIDownload download = DownloadMan.AddDownload(0, source, dest, t, e.Mime, 0, null, persist, false);
 
            if (download != null)
            {
                persist.SetPersistFlagsAttribute(2 | 32 | 16384);
                persist.SetProgressListenerAttribute(download);
                persist.SaveURI(source, null, null, null, null, (nsISupports)dest, null);
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.01.2018, 02:26
Помогаю со студенческими работами здесь

Компьютер не скачивает файлы из интернета
Помогите, пожалуйста, Компьютер перестал скачивать файлы из интернета, антивирусная база ESET NOD32 4.0.437.0 база данных 9149 в логах есть...

Ноутбук скачивает файлы, открывает вкладки
Здравствуйте. Недавно, скачивая файл, забыл убрать галочки с доп. функций. Удалил все что было, но теперь при запуске и при работе ноутбук...

Батник, который скачивает недостающие файлы по ftp
допустим есть ftp://192.168.1.1/ там лежат файлы : 12.12.2014.txt 13.12.2014.txt 14.12.2014.txt 15.12.2014.txt и т.д каждый...

Вирус сам скачивает файлы, устанавливает программы
Здравствуйте, случилась такая беда, скачал файл с сайта и после его установки понял, что скачал вирус т.к. установилось не то что...

Не скачивает файл через WebClient (502 Недопустимый шлюз), но скачивает через браузер
Добрый день! При попытке скачать файл с помощью Webclient выдает ошибку: Удаленный сервер возвратил ошибку: Недопустимый шлюз. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru