Загрузить файл на сайт программно?

Я использую 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

Я попытался использовать следующий код 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 ответ

Это известная проблема, и есть решение, но вам придется преобразовать ее из С# в Delphi.

Другое возможное решение - загрузить файл с помощью API URL Moniker. Затем загрузка произойдет в тот же сеанс WebBrowser контроль уже используется. Есть статья в MSKB:

Как обрабатывать POST-запросы в подключаемом обработчике протокола

POSTMON.EXE Образец ссылки на статью исчез с веб-сайта Microsoft, но все еще можно найти здесь.

Другие вопросы по тегам