我花点时间通过GeckoFX60 C#上传文件。 它可以在GeckoFX29上完美运行,但不能在60上完美运行。
在过去的版本中,我使用了以下代码:
var fileNames = new IntPtr[1];
fileNames[0] = new Gecko.CustomMarshalers.WStringMarshaler().MarshalManagedToNative("c:\\myfile.jpg");
var domInput = Xpcom.QueryInterface<nsIDOMHTMLInputElement (aux2.DOMElement);
domInput.MozSetFileNameArray(fileNames, (uint)fileNames.Length);
Marshal.ReleaseComObject(domInput);
然后我将触发更改事件:
var ev = webbrowser.Document.CreateEvent("Event");
var webEvent = new Event((mozIDOMWindowProxy)webbrowser.Window.DomWindow, ev.DomEvent as nsISupports);
webEvent.InitEvent("change", true, true);
el2.GetEventTarget().DispatchEvent(ev);
但是现在,在GeckoFX60中MozSetFileNameArray不可用。 我试图重新整合它并包含它,但是当我使用它时会崩溃。
我注意到现在该元素: HTMLInputElement
具有MozSetFileArray和MozSetFileNameArray,但是每当我使用它们时,都会出现错误。
有人使用GeckoFX60以编程方式成功上传文件吗? 我要实现的是加载具有输入type = file的表单,并自动完成输入和上传(无需用户进行任何交互)。
过去3天,我一直在绞尽脑汁,希望有人能提供帮助:)
谢谢!