Ich benutze Gecko eingebetteten Browser und am finall Schritt klicke ich auf den Link und laden Sie eine Zip-Datei. Es funktioniert gut, außer dass der Browser die Datei mit dem Standardprogramm öffnet. Wie verhindere ich, dass der Browser die heruntergeladene ZIP-Datei öffnet?Firefox/Gecko eingebetteter Browser
1
A
Antwort
0
Sie müssen die LauncherDialog Ereignis abonnieren und eine eigene Implementierung bieten:
Original-Antwort hier: https://bitbucket.org/geckofx/geckofx-45.0/issues/15/downloading-files-with-geckofx-45
Buchungscode für zukünftige Referenz:
private void LauncherDialog_Download(object sender, Gecko.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();
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");
nsITransfer nst = Xpcom.CreateInstance<nsITransfer>("@mozilla.org/transfer;1");
nst.Init(source, dest, t, e.Mime, 0, null, persist, false);
if (nst != null)
{
persist.SetPersistFlagsAttribute(2 | 32 | 16384);
persist.SetProgressListenerAttribute((nsIWebProgressListener)nst);
persist.SaveURI(source, null, null, (uint)Gecko.nsIHttpChannelConsts.REFERRER_POLICY_NO_REFERRER, null, null, (nsISupports)dest, null);
}
myStream.Close();
}
}
}
Verwandte Themen
- 1. JSF Create eingebetteter Browser verschachtelt
- 2. eingebetteter Webbrowser
- 3. Spring Boot eingebetteter Tomcat oder nicht eingebetteter Tomcat
- 4. Eingebetteter Webserver in Python?
- 5. Eingebetteter Java-Schlüsselwertspeicher
- 6. Speichern eingebetteter Dokumente Mongoid
- 7. Zustandsmaschine - eingebetteter Schalter
- 8. XmlSerializer und eingebetteter WhiteSpace
- 9. Eingebetteter Youtube-Player verlässt den Vollbildmodus nicht
- 10. Zurückgeben eingebetteter Dokumente in Abfrage
- 11. Vorlage von eingebetteter Ressource laden
- 12. Verwirrender Rückgabewert von eingebetteter Anwendung
- 13. Preload JavaScript Ein eingebetteter Player
- 14. JQ: exclude angegeben eingebetteter Schlüssel
- 15. Eingebetteter FTP-Server mit C#?
- 16. Morphia Abfrage in eingebetteter Liste
- 17. eingebetteter zookeeper für Einheits-/Integrationstest
- 18. eingebetteter Java Webserver verbirgt App-Schnittstelle
- 19. Eingebetteter Webserver - mögliche Probleme bei der Bereitstellung
- 20. Wohin geht mein eingebetteter Python-Standard?
- 21. AutoLayout funktioniert nicht mit eingebetteter Xib-Datei
- 22. Eingebetteter Tomcat mit einfacher Authentifizierung über Code
- 23. Manuelles Aufrufen der Validierung eingebetteter Formularsammlungseinträge
- 24. Apigilitätsfeld, das ein Array eingebetteter Objekte akzeptiert?
- 25. EmberJS RESTSerializer mit eingebetteter HasMay-Beziehung
- 26. Kann eingebetteter Ruby in Tests verwendet werden?
- 27. eingebetteter Tomcat-Fehler in Maven-Projekt
- 28. QEMU als eingebetteter Simulator für Firmware-Tests
- 29. Dynamisch Laden eingebetteter Ressourcenbericht Verwenden von Microsoft.Reporting.WinForms
- 30. WARNUNG wird ausgegeben, wenn eingebetteter Tomcat-Server