我正在使用Lazarus我有一个带有webbrowser组件的应用程序,它登录到一个网站加载一个页面如下(见下面的HTML代码),并填写不同的输入。最后一个输入是要上载的文件。我希望我的应用程序“单击”浏览,选择我想要的文件,然后打开。之后我可以在表格上发帖或者只是上传文件然后继续。
我在网站上有以下HTML代码:
<td align="left" class="RequiredInput">File:</td>
<td class="datafield">
<form name="frmMain" id="frmMain" action="upload.asp?step=2&output=1" method="post" enctype="multipart/form-data">
<input type="file" name="filename" id="filename">
</form>
我尝试从我的应用程序执行JS:document.getElementById('filename')。value ='C:\ x.csv'
我尝试使用 synapse 中的以下代码 HttpPostFile :
uFileName := 'C:\x.csv';
uStream := TFileStream.Create(uFileName, fmOpenRead);
uList:=TStringList.Create;
if HttpPostFile('upload.asp?step=2&output=1', 'filename', uFileName, uStream, uList) then
ShowMessage('OK');
它什么也没做(我用 Fiddler 跟踪了应用程序的活动)
任何帮助将不胜感激。
提前致谢,
泽索特
答案 0 :(得分:0)
这是一个已知问题,有一个solution,但您必须将其从С#转换为Delphi。
另一种可能的解决方案是使用URL Moniker APIs上传文件。然后,上传将在同一会话上发生 WebBrowser
控件已在使用。有一篇MSKB文章:
How To Handle POST Requests in a Pluggable Protocol Handler
与该文章相关联的POSTMON.EXE
示例已从Microsoft网站上消失,但仍然可以找到here。