2

我正在使用 Lazarus 我有一个带有 webbrowser 组件的应用程序,它登录到网站会加载如下页面(参见下面的 html 代码),并填写不同的输入。最后一个输入是要上传的文件。我希望我的应用程序“单击”浏览,选择我想要的文件,然后打开。之后,我可以发布表格或上传文件并继续。

1

我在网站上有以下 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'

在此处输入图像描述

2

我尝试使用来自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跟踪了应用程序的活动)

任何帮助,将不胜感激。

提前致谢,

佐尔特

4

1 回答 1

0

这是一个已知问题,并且有一个解决方案,但您必须将其从 С# 转换为 Delphi。

另一种可能的解决方案是使用URL Moniker APIs上传文件。然后将在控件已经使用的同一会话上进行上传。WebBrowser有一篇 MSKB 文章:

如何在可插入协议处理程序中处理 POST 请求

链接到该文章的POSTMON.EXE示例已从 Microsoft 网站上消失,但仍可在此处找到。

于 2013-11-04T09:23:09.263 回答