1
저는 Gecko 임베디드 브라우저를 사용합니다. 마지막 단계에서 필자는 링크를 클릭하고 zip 파일을 다운로드합니다. 브라우저가 기본 프로그램으로 파일을 여는 것을 제외하면 잘 작동합니다. 브라우저가 다운로드 한 zip 파일을 열지 못하도록하려면 어떻게합니까?Firefox/Gecko 임베디드 브라우저
저는 Gecko 임베디드 브라우저를 사용합니다. 마지막 단계에서 필자는 링크를 클릭하고 zip 파일을 다운로드합니다. 브라우저가 기본 프로그램으로 파일을 여는 것을 제외하면 잘 작동합니다. 브라우저가 다운로드 한 zip 파일을 열지 못하도록하려면 어떻게합니까?Firefox/Gecko 임베디드 브라우저
당신은 LauncherDialog 이벤트에 가입하고 자신의 구현을 제공해야합니다
여기원래 답 :
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();
}
}
}
: 나중에 참조 할 수 있도록
https://bitbucket.org/geckofx/geckofx-45.0/issues/15/downloading-files-with-geckofx-45
게시 코드