以编程方式将文件上传到网站?

时间:2013-11-03 22:08:19

标签: webbrowser-control lazarus twebbrowser

我正在使用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'

enter image description here

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 跟踪了应用程序的活动)

任何帮助将不胜感激。

提前致谢,

泽索特

1 个答案:

答案 0 :(得分:0)

这是一个已知问题,有一个solution,但您必须将其从С#转换为Delphi。

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

How To Handle POST Requests in a Pluggable Protocol Handler

与该文章相关联的POSTMON.EXE示例已从Microsoft网站上消失,但仍然可以找到here